Search a 2D Matrix -- LeetCode
Posted brucemengbm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章