题目
基本思路
这个题目中,这两句话一下砸降低的题目的难度:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
思路分为两部分:
1. 使用while循环找到target所在的区间行
2. 利用二分查找在该行中进行常规操作
实现代码
class Solution:
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
i = 0
c = len(matrix)
# 特殊情况1:处理[] [[]]的这两种情况
if c == 0 or len(matrix[0]) == 0:
return False
# while循环的判定边界一定要谨慎
while i<c-1 and target>matrix[i][-1]:
i += 1
left,right = 0,len(matrix[0])-1
while left <= right:
mid = (left+right) // 2
if target == matrix[i][mid]:
return True
elif target < matrix[i][mid]:
right = mid - 1
else:
left = mid + 1
return False
注意
不要过分依赖IDE,解题要全面,用大脑编译!!!
不要过分依赖IDE,解题要全面,用大脑编译!!!
不要过分依赖IDE,解题要全面,用大脑编译!!!
=====重要的事情说三遍=====