zoukankan      html  css  js  c++  java
  • LeetCode: Search a 2D Matrix 解题报告

    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:

    [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    

    Given target = 3, return true.

    SOLUTION 1:

    采用经典的二分法模板

     1 while (left <= right) {
     2             int mid = left + (right - left) / 2;
     3             
     4          
     5             int n = matrix[row][col];
     6             
     7             if (n == target) {
     8                 ...
     9             } else if (n < target) {
    10                 left = mid + 1;
    11             } else {
    12                 right = mid - 1;
    13             }
    14         }
     1 public class Solution {
     2     public 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;
    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         
    32         return false;        
    33     }
    34 }
    View Code

    GITHUB:

    https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/divide2/SearchMatrix.java

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4196858.html
Copyright © 2011-2022 走看看