• 240. 搜索二维矩阵 II


    Solution

    思路1:

    暴力搜索

    class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            for (int[] row: matrix) {
                for (int x : row) {
                    if (x == target) 
                        return true;
                }
            }
            return false;
        }
    }
    

    思路2:

    每行有序,可以二分查找

    class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            for (int[] row: matrix) {
                if (searchVal(row, target)) return true;
            }
            return false;
        }
    
        public boolean searchVal(int[] row, int target) {
            int l = 0, r = row.length - 1;
            while (l <= r) {
                int mid = (r - l) / 2 + l;
                if (row[mid] == target) return true;
                if (row[mid] < target) l = l + 1;
                else r = r - 1;
            }
            return false;
        }
    }
    

    思路3:

    根据矩阵特性,从右上角往左下角搜索,右上角((x,y))(target)对比,

    • 如果((x,y)>target),因为每一列从上往下递增,所以该列没必要往下 ,则y--
    • 如果((x,y)<target),因为每一行从左到右递增,所以该行没必要往左 ,则x++
    class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            int n = matrix.length, m = matrix[0].length;
            int x = 0, y = m - 1;
            while (x < n && y > -1) {
                if (matrix[x][y] == target) return true;
                if (matrix[x][y] > target) y -= 1;
                else x += 1;
            }
            return false;
        }
    }
    
    //  (0, m-1)  (n, 0)
    
    埋骨何须桑梓地,人生无处不青山
  • 相关阅读:
    ubantu安装pip3
    ubantu更换镜像源
    git 快速上手
    python zmq(ZeorMQ)
    用python连接SQL server数据库
    Django模板url需要注意的地方
    希尔排序记录--最好写的排序
    口腔溃疡要对症-------阴虚火旺和阳虚火旺
    与大学室友,保持一定的距离
    取指 间址 执行 中断 FE IND EX INT四个触发器
  • 原文地址:https://www.cnblogs.com/ACMerszl/p/15468402.html
Copyright © 2020-2023  润新知