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

(74)Search a 2D Matrix

时间:2015-02-09 17:33:56      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

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/

 

 

(74)Search a 2D Matrix

标签:

原文地址:http://www.cnblogs.com/luochuanghero/p/4281701.html

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