zoukankan      html  css  js  c++  java
  • [Leetcode] 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:

    public class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            int N=matrix.length-1;
            int M=matrix[0].length-1;
            int i=0;
            int j=M;
            while(j>=0&&i<=N){
                if(matrix[i][j]==target){
                    return true;
                }else if(matrix[i][j]<target){
                    ++i;
                }else{
                    --j;
                }
            }
            return false;
        }
    }

    Solution 2:

    2分法。

     1 public class Solution {
     2     public boolean searchMatrix(int[][] matrix, int target) {
     3         int min=0;
     4         int max=matrix[0].length*matrix.length-1;
     5         while(min<=max){
     6             int mid=(min+max)/2;
     7             int y=mid/matrix[0].length;
     8             int x=mid%matrix[0].length;
     9             if(matrix[y][x]==target)
    10                 return true;
    11             else if(matrix[y][x]>target){
    12                 max=mid-1;
    13             }else{
    14                 min=mid+1;
    15             }
    16         }
    17         return false;
    18     }
    19 }
  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS(WKWebView)OC与JS交互 之三
    iOS(UIWebView 和WKWebView)OC与JS交互 之二
    CentOS VMware 下SSH配置方法详解
    15个nosql数据库
    MySql 优化
    Elasticsearch 相关名词理解
  • 原文地址:https://www.cnblogs.com/Phoebe815/p/4099655.html
Copyright © 2011-2022 走看看