欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 蓝桥与力扣刷题(74 搜索二维矩阵)

蓝桥与力扣刷题(74 搜索二维矩阵)

2025/4/17 14:59:40 来源:https://blog.csdn.net/weixin_74769543/article/details/147029971  浏览:    关键词:蓝桥与力扣刷题(74 搜索二维矩阵)

题目:给你一个满足下述两条属性的 m x n 整数矩阵:

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 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

解题思路+代码:

代码:

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length; //矩阵行数if (m == 0) return false; int n = matrix[0].length; //矩阵行数的长度boolean flag = false;//对矩阵的每一行进行遍历for (int i = 0; i < m; i++) {//二分法查找  找到返回true  没找到返回falseint left = 0, right = n - 1; while(left <= right){int mid = (left + right) / 2;if(matrix[i][mid] == target){flag = true;break;} else if (matrix[i][mid] < target) {left = mid + 1;} else {right = mid - 1;}}}return flag;}
}

 总结:该题主要考察矩阵和二分法的运用。要解答该题,需要掌握矩阵与二分法的相关知识。通过二分查找,并与目标值进行匹配搜索效率会更快。这道题是对矩阵中的每一行进行二分查找,实际上也可以查找每一行的最后一个值,如果大于目标值,即锁定该行再继续二分查找。否则,一直往下一行查找,直到找到目标值,未找到返回结果。当然,这道题使用暴力枚举也可以,但是遇到非常大的矩阵,暴力枚举所花费的时间会比较久,因此不太推荐。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词