leetcode74. 搜索二维矩阵(二分查找)

tech2025-07-20  5

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

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

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

代码

class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix.length==0) return false; int n=matrix.length,m=matrix[0].length; int l=0,r=n*m-1; while (l<=r)//二分查找 { int mid=(r-l)/2+l; if(matrix[mid/m][mid%m]==target)//根据数字的位置,找出二维矩阵的对应 return true; else if(matrix[mid/m][mid%m]>target) r=mid-1; else l=mid+1; } return false; } }
最新回复(0)