给你一个满足下述两条属性的
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 <= 104class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0||matrix[0].size()==0)
return false;
int m=matrix.size(),n=matrix[0].size();
int left=0,right=m*n-1;
while(left<=right)
{
int mid=(right+left)/2;
int val=matrix[mid/n][mid%n];
if(val==target)
return true;
else if(val<target)
left=mid+1;
else
right=mid-1;
}
return false;
}
};
LeetCode 74. 搜索二维矩阵
Liangwei Lin2026-05-12 7:05

