zoukankan      html  css  js  c++  java
  • LeetCode:搜索二维矩阵【74】

    LeetCode:搜索二维矩阵【74】

    题目描述

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

    • 每行中的整数从左到右按升序排列。
    • 每行的第一个整数大于前一行的最后一个整数。

    示例 1:

    输入:
    matrix = [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    target = 3
    输出: true
    

    示例 2:

    输入:
    matrix = [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    target = 13
    输出: false

    题目分析

      这道题目比较简单,首先我们不从(0,0)出发,我们从(0,LAST)出发

    • 如果坐标值等于目标值,返回true。
    • 如果坐标值小于目标值,那说明这一行都小于目标值,我们直接移动到下一行,即增大x。
    • 如果坐标值大于目标值,那说明目标值如果存在的话一定就在这一行,我们缩小y。

      我们思考一个问题,目标值如果不存在的话!

      要么就是大于最后一行的最大值,或者小于某一行的最小值,总而言之就是越界了,所以我们返回FLASE的条件就是越界

    Java题解

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

      

  • 相关阅读:
    nginx升级总结,漏洞升级
    【BUG解决】在git上pull时提示You have not concluded your merge. (MERGE_HEAD exists)
    如何自签名把http网站变成https网站(https自签名方法)
    ifly
    Shell排序和二叉树排序
    C/C++复习笔记(2)
    C/C++复习笔记(1)
    C语言字符串操作
    python+flask
    C语言的一点复习
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9927960.html
Copyright © 2011-2022 走看看