IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【力扣刷题】74. 搜索二维矩阵 -> 正文阅读

[数据结构与算法]【力扣刷题】74. 搜索二维矩阵

题目链接:力扣

题目:

编写一个高效的算法来判断?m x n?矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104

解答:

【二分法查找——非递归】

1、将矩阵转一维数组

2、复制数组,并按升序排序,排序后的数组与原数组对比,若不同,返回False

3、设置两个游标来记录每次二分的开始索引 left 和结束索引 right

4、循环求中间位置的值mid_index,并判断对应的值是否符合要求,若是返回mid_index,否则更新索引的值并进入下一次循环

5、若循环结束还是没找到相等,最终返回False

完整代码如下:

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        list_1 = sum(matrix,[])
        list_2 = list_1.copy()
        list_2.sort()
        if list_1!=list_2:
            return False
        left,right = 0,len(list_2)-1
        while left<=right:
            mid_index = (left+right)//2
            if list_2[mid_index]==target:
                return True
            elif list_2[mid_index]>target:
                right = mid_index - 1
            else:
                left = mid_index + 1
        return False

提交结果:?

【字符串】

1、将矩阵转一维数组

2、复制数组,并按升序排序,排序后的数组与原数组对比,若不同,返回False

3、判断目标值在列表中的个数,若是0,则返回False;否则返回True

完整代码如下:

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        list_1 = sum(matrix,[])
        list_2 = list_1.copy()
        list_2.sort()
        if list_1!=list_2:
            return False
        index = list_2.count(target)
        if index==0:
            return False
        else:
            return True

提交结果:?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:13:30  更:2022-05-06 11:14:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:48:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码