• 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;
        }
    }
    

      

  • 相关阅读:
    技术一定要动手做一遍才算自已的
    终于提离职了,感觉如释重负
    自我评定与学习计划
    MYSQL---INSERT...SELECT...
    MYSQL---LIMIT
    SQL---having
    MYSQL---数据定义
    CSS---Block和inline元素对比
    CSS---清除浮动
    T-SQL---分页语句
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9927960.html
Copyright © 2020-2023  润新知