(74)Search a 2D Matrix

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.

For example,

Consider the following matrix:

example:

Consider the following matrix:

[

    [1, 3, 5, 7],

    [10, 11, 16, 20],

    [23, 30, 34, 50]

]

Given target = 3, return true.

 

 1 public class SearchMatrix {
 2     public static boolean searchMatrix(int[][] matrix, int target) {
 3         if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
 4             return false;
 5         }
 6 
 7         int rows = matrix.length;
 8         int cols = matrix[0].length;
 9 
10         int num = rows * cols;
11 
12         int left = 0;
13         int right = num - 1;
14 
15         while (left <= right) {
16             int mid = left + (right - left) / 2;
17 
18             int row = mid / cols;//how to find out row and columns
19             int col = mid % cols;
20 
21             int n = matrix[row][col];
22 
23             if (n == target) {
24                 return true;
25             } else if (n < target) {
26                 left = mid + 1;
27             } else {
28                 right = mid - 1;
29             }
30         }
31         return false;
32     }
33 }

 

https://oj.leetcode.com/problems/search-a-2d-matrix/

 

 

posted on 2015-02-09 15:36  lh_chuang  阅读(141)  评论(0)    收藏  举报

导航