首页 > 其他 > 详细

Leetcode 74 Search a 2D matrix

时间:2016-01-20 20:35:12      阅读:243      评论:0      收藏:0      [点我收藏+]

Q: 

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 from left to right; The first integer of each row is greater than the last integer of the previous row.

A: binary search

 

public class Solution {
    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 start = 0;
        int end = m * n - 1;
        while (start + 1 < end){
            int mid = start + (end - start) / 2;
            if (matrix[mid / n][mid % n] == target){
                return true;
            }else if (matrix[mid / n][mid % n] < target){
                start = mid;
            }else{
                end = mid;
            }
        }
        if (matrix[start / n][start % n] == target) return true;
        else if (matrix[end / n][end % n] == target) return true;
        else return false;
    }
}

  

Leetcode 74 Search a 2D matrix

原文:http://www.cnblogs.com/nobody2somebody/p/5146250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!