[leetcode]240. Search a 2D Matrix II

来源:互联网 发布:mac docker ycm 编辑:程序博客网 时间:2024/06/06 09:27

题目

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

  • Integers in each row are sorted in ascending from left to right.
  • Integers in each column are sorted in ascending from top to bottom.

For example,

Consider the following 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]]

Given target = 5, return true.

Given target = 20, return false.

代码

1.
/* * Author:郭方舟 * Problem:240—Search_a_2D_Matrix II * Algorithm:遍历行,每行上的元素用二分查找  * time:2017/03/16 * time complexity is O(mlog2(n)) * space complexity is O(1) */  /*public boolean searchMatrix(int[][] matrix, int target) {        if(matrix ==  null || matrix.length == 0 || matrix[0].length == 0){return false;}int m = matrix.length;  //行数int n = matrix[0].length; //列数for(int i = 0 ; i < m;i++){int start = 0,end = n - 1;while(start <= end){int mid = start + (end - start)/2;if(matrix[i][mid] == target){return true;}else if(matrix[i][mid] < target){start = mid +1;}else{end = mid -1;}}}return false;}*/
2.
/* * Author:郭方舟 * Problem:240—Search_a_2D_Matrix II * Algorithm:刚开始把右上角的元素跟 target进行比较,如果它比target大,列数就减一 ;如果它比target小 ,行数就加一 * time:2017/03/16 * time complexity is O(m+n) * space complexity is O(1) * beats:48.57% */public boolean searchMatrix(int[][] matrix, int target) {if(matrix == null || matrix.length == 0 || matrix[0].length == 0){return false;}int m = matrix.length;//行数int n = matrix[0].length;//列数int i = 0 , j = n -1;while( i < m && j >=0){if(matrix[i][j] < target){i++;}else if(matrix[i][j] > target){j--;}else{return true;}}return false;}}

0 0
原创粉丝点击