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

  • 相关阅读:
    Spring Boot第四弹,一文教你如何无感知切换日志框架?
    Spring Boot 第三弹,一文带你了解日志如何配置?
    UVa 1625
    UVa 11584
    UVa 11400
    UVa 12563
    UVa 116
    UVa 1347
    UVa 437
    UVa 1025
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4196858.html
Copyright © 2011-2022 走看看