zoukankan      html  css  js  c++  java
  • 74. 搜索二维矩阵(二分)

    class Solution {
        // 两种二分模版
        public boolean searchMatrix(int[][] matrix, int target) {
            if(matrix.length == 0 || matrix[0].length == 0) return false;
            int m = matrix.length, n = matrix[0].length;
            int l = 0, r = m * n - 1;
            while(l <= r) { // 判断区间内所有点
                int mid = (l + r) >> 1;
                if(matrix[mid/n][mid%n] == target) return true;
                else if (matrix[mid/n][mid%n] < target) {
                    l = mid + 1;
                }  else {
                    r = mid - 1;
                }
            }
            return false;
        }
    
        public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix.length == 0 || matrix[0].length == 0) return false;
        int m = matrix.length, n = matrix[0].length;
        int l = 0, r = m * n - 1;
        while(l < r) {  // 注意二分的两种终止条件l < r 没有判断完成区间内所有点l == r情况
            int mid = (l + r) >> 1;
            if(matrix[mid/n][mid%n] == target) return true;
            else if (matrix[mid/n][mid%n] < target) {
                l = mid + 1; // l 小的话一直向右逼近
            }  else {
                r = mid;  // mid-1和mid都可以
            }
        }    // 退出循环继续判断
        return matrix[l/n][l%n] == target;
        }
    }
  • 相关阅读:
    Sql inner join
    转:MySQL 的show processlist
    session cookie
    集群和分布式
    设计模式
    Web性能优化——缓存
    关于 java 里面的路径
    1分钟看懂log4j 配置自己想要的日志信息
    spring @bean 的理解
    如何用iptables实现NAT(转)
  • 原文地址:https://www.cnblogs.com/yonezu/p/13269305.html
Copyright © 2011-2022 走看看