leetcode 74. 搜索二维矩阵 &240. 搜索二维矩阵 II

def searchMatrix(self, matrix, target):
        """
        容易出错的地方:二分查找的low<=high的条件
        二维数组转化为一维数组的方法:
        1.extend 循环n行
        2.普通的二层循环
        3. eval 表达式转化 去掉[]
        ...
        """
        #n = len(matrix)###行
        res = []
        # for i in range(n):
        #     res.extend(matrix[i])
        res = [i for item in matrix for i in item]
        n = len(res)
        low,high = 0,n-1
        #mid = int((low+high)/2)
        while low <= high:
            mid = int((low+high)/2)
            if target == res[mid]:
                return True
            elif target < res[mid]:
                high = mid -1
            else:
                low = mid + 1
        return False
'''
二维数组转化为一维数组的方法:
        1.extend 循环n行
        2.普通的二层循环
        3. eval 表达式转化 去掉[]
        4.itertools工具的方法chain
'''
from itertools import chain
b=[[1,2,3], [5,8], [7,8,9]]
c=list(chain(*b))
print(c)
[1, 2, 3, 5, 8, 7, 8, 9]


import operator  
from functools import reduce  
a = [[1,2,3], [4,6], [7,8,9,8]]  
print(reduce(operator.add, a))  

leetcode240

def searchMatrix(self, matrix, target):
        """
        注意边界条件
        从右上角开始如果小于该值减少这一列j--,如果大于该值,行增加i++
        """
        if not matrix:
            return False
        if not matrix[0]:
            return False
        m, n = len(matrix), len(matrix[0])
        
        i = 0
        j = n - 1
        while j < n and j >= 0 and i < m and i >=0:
            if target < matrix[i][j]:
                j -= 1
            elif target > matrix[i][j]:
                i += 1
            else:
                return True
        return False

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值