1. 程式人生 > >lintcode-搜索二維矩陣 java

lintcode-搜索二維矩陣 java

log print pre ont 特性 兩種 pos pan dex

題目描述:

寫出一個高效的算法來搜索 m × n矩陣中的值。

這個矩陣具有以下特性:

  • 每行中的整數從左到右是排序的。
  • 每行的第一個數大於上一行的最後一個整數。

代碼實現:

public class Solution {
    /*
     * @param matrix: matrix, a list of lists of integers
     * @param target: An integer
     * @return: a boolean, indicate whether matrix contains target
     */
    public
boolean searchMatrix(int[][] matrix, int target) { if (matrix == null || matrix.length==0){ return false; } if (matrix[0]==null || matrix[0].length==0){ return false; } int row = matrix.length; int col = matrix[0].length; int
start = 0; int end = row * col - 1; while(start <= end){ System.out.println(start); int mid = (end + start) / 2; int num = matrix[mid/col][mid%col]; if (num==target){ return true; }
else if (num > target){ end = mid-1; }else{ start = mid+1; } } return false; } }

備註:坑死我的一道題,

1.二分查找,其中mid有兩種表示形式,一種(end+start)/ 2,一種start+(end-start)/ 2

2.知道index求矩陣中元素:用index/col列元素;

lintcode-搜索二維矩陣 java