剑指offer-python刷题-二维数组中的查找
发布日期:2021-07-28 12:03:17
浏览次数:5
分类:技术文章
本文共 1013 字,大约阅读时间需要 3 分钟。
题目:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
[[1,2,8,9],
[2,4,9,12], [4,7,10,13], [6,8,11,15]]给定 target = 7,返回 true。
给定 target = 3,返回 false。
解法一:双层循环对二维列表进行遍历,但是时间复杂度比较高。
# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here for i in range(len(array)): for j in range(len(array[i])): if array[i][j] == target: return True return False
解法二:从二维数组的右上角开始查找,因为在这个位置,左侧的数比他小,右侧的数比他大,从左下角开始同理。但是不能从左上角和右下角开始。
# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here #从右上角开始搜索,左侧的数比当前小,下侧的数比当前大 m = len(array) n = len(array[0]) i = 0 j = n-1 while i < m and j >= 0: if array[i][j] == target: return True elif array[i][j] > target: j -= 1 else: i += 1 return False
转载地址:https://blog.csdn.net/sinat_42437278/article/details/118220698 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年03月31日 04时05分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode题解(1044):最长重复子串(Python)
2019-04-26
LeetCode题解(1048):最长字符串链(Python)
2019-04-26
LeetCode题解(1072):按列翻转得到最大值等行数(Python)
2019-04-26
LeetCode题解(1086):前五科的均分(Python)
2019-04-26
LeetCode题解(1364):顾客的可信联系人数量(SQL)
2019-04-26
LeetCode题解(1369):获取最近第二次的活动(SQL)
2019-04-26
LeetCode题解(1378):使用唯一标识码替换员工ID(SQL)
2019-04-26
LeetCode题解(1384):按年度列出销售总额(SQL)
2019-04-26
LeetCode题解(1393):股票的资本损益(SQL)
2019-04-26
LeetCode题解(1398):购买了产品A和产品B却没有购买产品C的顾客(SQL)
2019-04-26
LeetCode题解(1407):排名靠前的旅行者(SQL)
2019-04-26
LeetCode题解(1412):查找成绩处于中游的学生(SQL)
2019-04-26
LeetCode题解(1421):净现值查询(SQL)
2019-04-26
LeetCode题解(1435):制作会话柱状图(SQL)
2019-04-26
LeetCode题解(1440):计算布尔表达式的值(SQL)
2019-04-26
文件服务器实现基本条件!
2019-04-26
文件服务器-活动目录的讨论
2019-04-26
文件服务器-活动目录的安装
2019-04-26
文件服务器-OU的概念!
2019-04-26
XP HOME 版本的 限制!
2019-04-26