lintcode-搜索二維矩陣 java
阿新 • • 發佈:2018-02-04
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 */ publicboolean 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; intstart = 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