leetcode hot 100 搜刮二维矩阵II
编写一个高效的算法来搜刮 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:[*]每行的元素从左到右升序排列。
[*]每列的元素从上到下升序排列。
示例 1:
https://i-blog.csdnimg.cn/img_convert/96ba1ddf51859b2e91eba0c96898a81e.jpeg
<strong>输入:</strong>matrix = [,,,,], target = 5
<strong>输出:</strong>true
示例 2:
https://i-blog.csdnimg.cn/img_convert/1d304897f1af2dde7bddd4974f9abd03.jpeg
<strong>输入:</strong>matrix = [,,,,], target = 20
<strong>输出:</strong>false
提示:
[*]m == matrix.length
[*]n == matrix.length
[*]1 <= n, m <= 300
[*]-109 <= matrix <= 109
[*]每行的全部元素从左到右升序排列
[*]每列的全部元素从上到下升序排列
[*]-109 <= target <= 109
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
//这道题是二维矩阵 ,有特殊的性质
// 每行的元素从左到右升序排列。
// 每列的元素从上到下升序排列
// 首先,可以O(n^2) for循环遍历查询 但是没有利用这个矩阵的性质
// 首先看矩阵的四个点
// 左上角 向右变大 向下变大 不可用
// 左下角 向上变小 向右变大 可用
//右上角 向下变大 向左变小 可用
//右下角不可用
// 左下角 ,右上角可以使用
// 左下角
int x=matrix.length-1;
int y=0;
while(x>=0 && y<matrix.length){
if(matrix==target) return true;
else{
//目标值比该值小往上移
if(matrix>target) x--;
//目标值比该值大往右移
else y++;
}
}
return false;
}
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]