zoukankan      html  css  js  c++  java
  • Leet Code 240.搜索二维矩阵 Ⅱ

    题目

    编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

    • 每行的元素从左到右升序排列
    • 每列的元素从上到下升序排列

    思路

    暴力就是矩阵都搜过一遍,看有没有目标值,但肯定不是题目本意。

    通过观察给出的矩阵,可以发现如果从矩阵左上角和右下角出发,当所在位置的值与目标值不匹配时,有两个方向可以出发。比如从左上角,当前值比较小,往下和往右,都能到更大的值。同理右下角也是。

    有两个方向,就不太行,选择一个方向,就会错过另一个方向。而左下角和右上角就比较适合。比目标值小和比目标值大,都只有一个方向。

    代码

    右上角

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

    左下角

    class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            if (matrix.length == 0 || matrix[0].length == 0 || matrix == null) return false;
            int m = matrix.length, n = matrix[0].length;
            int row = m - 1, col = 0;
            while (row >= 0 && col < n) {
                if(matrix[row][col] == target) return true;
                else if(matrix[row][col] < target) col++;
                else row--;
            }
            return false;
        }
    }
    
  • 相关阅读:
    geotrellis使用(二十八)栅格数据色彩渲染(多波段真彩色)
    我的2016,感恩、乐观、努力
    我的奋斗——从印刷工人到地理信息大数据系统程序员
    geotrellis使用(二十七)栅格数据色彩渲染
    用户画像
    栈和队列在python中的实现
    跳一跳第一天总结
    在pycharm中使用scrapy爬虫
    用户使用手册
    项目测试报告和用户使用手册
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/13156406.html
Copyright © 2011-2022 走看看