leetcode hot 100 搜索二维矩阵II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例 1:

leetcode hot 100 搜索二维矩阵II_第1张图片

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:

leetcode hot 100 搜索二维矩阵II_第2张图片

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= n, m <= 300
  • -109 <= matrix[i][j] <= 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 && ytarget) x--;
                //目标值比该值大往右移
                else          y++;
            }
        }
        return false;
    }

}

你可能感兴趣的:(leetcode,矩阵,算法)