码迷,mamicode.com
首页 > 其他好文 > 详细

Search a 2D Matrix -- LeetCode

时间:2017-08-10 10:05:18      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:art   get   line   size   else   pos   ica   ==   ted   

原题链接: http://oj.leetcode.com/problems/search-a-2d-matrix/ 
这道题是二分查找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 ArraySearch for a Range。思路事实上差点儿相同,略微变化一下就可以。有兴趣能够练习一下哈。

Search a 2D Matrix -- LeetCode

标签:art   get   line   size   else   pos   ica   ==   ted   

原文地址:http://www.cnblogs.com/brucemengbm/p/7337377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!