涛声依旧在 发表于 2025-1-26 03:04:12

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]
查看完整版本: leetcode hot 100 搜刮二维矩阵II