飞道的博客

leetcode74. 搜索二维矩阵 ,你见过吗

332人阅读  评论(0)

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

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

输入:
matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
target = 3
输出: true
示例 2:

输入:
matrix = [
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
target = 13
输出: false

思路:整个二维数组是有序的,二分查找即可。


  
  1. class Solution {
  2. public boolean searchMatrix(int[][] matrix, int target) {
  3. if (matrix == null || matrix.length == 0) {
  4. return false;
  5. }
  6. int row = matrix.length;
  7. int col = matrix[ 0].length;
  8. int start = 0;
  9. int end = row * col - 1;
  10. while (start <= end) {
  11. int mid = start + (end - start) / 2;
  12. if (matrix[mid / col][mid % col] == target) return true;
  13. else if (matrix[mid / col][mid % col] > target)end = mid - 1;
  14. else start = mid + 1;
  15. }
  16. return false;
  17. }
  18. }

 


转载:https://blog.csdn.net/hebtu666/article/details/103563632
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场