题目概览给你一个满足下述两条属性的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.lengthn matrix[i].length1 m, n 100-10^4 matrix[i][j], target 10^4来源74. 搜索二维矩阵 - 力扣LeetCode解题分析方法二分查找 x 2每行的第一个整数大于前一行的最后一个整数说明每一列也是递增的因此我们可以用二分法遍历第一列找到 target 所属行再二分遍历当前行找到对应 target 即可。时间复杂度O(logm logn)空间复杂度O(1)class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m matrix.length, n matrix[0].length; int top 0, down m - 1, row 0; while(top down) { int mid (down - top 1) / 2 top; if (matrix[mid][0] target) { return true; } if (matrix[mid][0] target) { down mid - 1; } else { top mid; } } int left 0, right n - 1, col 0; while(left right) { int mid (right - left) / 2 left; if (matrix[top][mid] target) { return true; } if (matrix[top][mid] target) { right mid - 1; } else { left mid 1; } } return matrix[top][left] target; } }