首页 > 代码库 > Search a 2D Matrix -- LeetCode
Search a 2D Matrix -- LeetCode
原题链接: http://oj.leetcode.com/problems/search-a-2d-matrix/
这道题是二分查找Search Insert Position的题目。由于矩阵是行有序而且列有序。查找仅仅须要先按行查找。定位出在哪一行之后再进行列查找就可以,所以就是进行两次二分查找。时间复杂度是O(logm+logn),空间上仅仅需两个辅助变量,因而是O(1),代码例如以下:
这道题是二分查找Search Insert Position的题目。由于矩阵是行有序而且列有序。查找仅仅须要先按行查找。定位出在哪一行之后再进行列查找就可以,所以就是进行两次二分查找。时间复杂度是O(logm+logn),空间上仅仅需两个辅助变量,因而是O(1),代码例如以下:
public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length==0 || matrix[0].length==0) return false; int l = 0; int r = matrix.length-1; while(l<=r) { int mid = (l+r)/2; if(matrix[mid][0] == target) return true; if(matrix[mid][0] > target) { r = mid-1; } else { l = mid+1; } } int row = r; if(row<0) return false; l = 0; r = matrix[0].length-1; while(l<=r) { int mid = (l+r)/2; if(matrix[row][mid] == target) return true; if(matrix[row][mid] > target) { r = mid-1; } else { l = mid+1; } } return false; }二分查找是面试中出现频率不低的问题,可是非常少直接考二分查找。会考一些变体,除了这道题。还有Search in Rotated Sorted Array和Search for a Range。思路事实上差点儿相同,略微变化一下就可以。有兴趣能够练习一下哈。
Search a 2D Matrix -- LeetCode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。