【力扣100】74.搜索二维矩阵 || 列表推导式

添加链接描述

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        # 把距阵变成列表,然后二分查找
        nums=[]
        m=len(matrix)
        n=len(matrix[0])
        for i in range(m):
            for j in range(n):
                nums.append(matrix[i][j])
        left,right=0,len(nums)-1
        if target<nums[0] or target>nums[right]:
            return False
        while left<=right:
            mid=left+(right-left)//2
            if target==nums[mid]:
                return True
            elif target<nums[mid]:
                right=mid-1
            else:
                left=mid+1
        return False
        

思路:

  1. 暴力求解
  2. 把矩阵降维,然后使用二分搜索


列表推导式

将二维数组变为一维数组中,使用列表推导式,会更加简便

python 复制代码
# 二维矩阵
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 将二维矩阵转换为一维列表
flat_list = [element for row in matrix for element in row]

print(flat_list)


解法二:

python 复制代码
class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        m=len(matrix)
        n=len(matrix[0])
        i,j=0,m*n-1
        while i<=j:
            mid=i+(j-i)//2
            x=mid // n
            y=mid % n
            if target==matrix[x][y]:
                return True
            elif target<matrix[x][y]:
                j=mid-1
            else:
                i=mid+1
        return False

思路:

  1. 同样是二分查找,把mid对应的二维坐标找到就可以了
相关推荐
放羊郎3 小时前
基于ORB-SLAM2算法的优化工作
人工智能·算法·计算机视觉
mask哥4 小时前
力扣算法java实现汇总整理(上)
java·算法·leetcode
如果'\'真能转义说4 小时前
OOXML 文档格式剖析:哈希、ZIP结构与识别
xml·算法·c#·哈希算法
梦梦代码精6 小时前
BuildingAI 上部署自定义工作流智能体:5 个实用技巧
大数据·人工智能·算法·开源软件
Zephyr_07 小时前
Leedcode算法题
java·算法
流年如夢7 小时前
栈和列队(LeetCode)
数据结构·算法·leetcode·链表·职场和发展
Hello.Reader8 小时前
算法基础(十)——分治思想把大问题拆成小问题
java·开发语言·算法
绛橘色的日落(。・∀・)ノ9 小时前
机器学习之评估与偏差方差分析
算法
消失的旧时光-19439 小时前
C语言对象模型系列(四)《Linux 内核里的 container_of 到底是什么黑魔法?》—— 一篇讲透 Linux 内核的“对象模型”核心技巧
linux·c语言·算法