21 分类: Leetcode,算法

74.搜索二维矩阵

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

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

示例 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 <= 104
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int left=0,right=matrix.length*matrix[0].length-1;
        while(left<=right){
            int mid=(left+right)/2;
            //注意!获取行列都是对行进行除法和模运算
            int i=mid/matrix[0].length;
            int j=mid%matrix[0].length;
            if(matrix[i][j]==target)
                return true;
            else if(matrix[i][j]>target){
                right=mid-1;
            }
            else
                left=mid+1;
        }
        return false;
    }
}

#none

作者: zyk的zone

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

-->