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

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

    Given target = 3, return true.

    【分析】

    1.采用二分搜索的思想

    2.假设从右上角开始搜索,若当前值大于target,则向左移;若当前值小于target,则向右移。

    【算法实现】

    public class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            int rows=matrix.length;
            int cols=matrix[0].length;
            int x=0;
            int y=cols-1;
            while(x<rows&&y>=0) {
                if(matrix[x][y]==target)
                    return true;
                else if(matrix[x][y]>target)
                    y--;
                else
                    x++;
            }
            return false;
        }
    }
  • 相关阅读:
    MLE
    AHOI/HNOI2018道路
    AHOI/HNOI2018排列
    推式子
    AHOI/HNOI2018游戏
    ! BJOI2018治疗之雨
    BJOI2018链上二次求和
    BJOI2018双人猜数游戏
    ! BJOI2018染色
    BJOI2018二进制
  • 原文地址:https://www.cnblogs.com/hwu2014/p/4462471.html
Copyright © 2011-2022 走看看