内容简介:思路一:按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。 思路二:从数组的左下角array[j][i]开始查找,如果当前值小于目标,就向右,即i+1;如果当前值大于目标,就向上,即j-1。
【题目描述】
思路一:按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。 思路二:从数组的左下角array[j][i]开始查找,如果当前值小于目标,就向右,即i+1;如果当前值大于目标,就向上,即j-1。
【源代码】
思路1:时间复杂度0(nlogn)
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
if(len(array)==0 or len(array[0])==0):return False
for i in range(0,len(array)):
if(array[i][0]>target):
break
num=array[i]
left=0
right=len(num)-1
while left<=right:
mid=int((left+right)/2)
if(num[mid]>target):
right=mid-1
elif(num[mid]<target):
left=mid+1
else:
return True
return False
复制代码
思路2:时间复杂度:O(n)
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array) - 1
cols= len(array[0]) - 1
i = rows
j = 0
while j<=cols and i>=0:
if target<array[i][j]:
i -= 1
elif target>array[i][j]:
j += 1
else:
return True
return False
复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 菜鸡的算法修炼:数组(旋转数组的最小数字)
- 算法-计算小数组在大数组中的索引
- 数组查询算法(JavaScript)
- JavaScript数组-排序算法
- 算法面试:数组编码面试问题
- 数据结构与算法: 数组
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java多线程编程实战指南(设计模式篇)
黄文海 / 电子工业出版社 / 2015-10 / 59.00
随着CPU 多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而 解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。《Java多线程编程实战指南(设计模式篇)》采用Java(JDK1.6)语言和UML 为描述语言,并结合作者多......一起来看看 《Java多线程编程实战指南(设计模式篇)》 这本书的介绍吧!