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;
        }
    }
  • 相关阅读:
    用记事本编写C#程序并运行C#代码
    C#传递参数大集合
    JQuery或JavaScript获取网页的宽度、高等
    mybatis
    mysql 函数
    eclipse sts 常规操作
    谷歌浏览器自动翻译当前网页
    推荐Calendar操作日期
    IDEA 快捷键
    eclipse sts 快捷键
  • 原文地址:https://www.cnblogs.com/yonezu/p/13269305.html
Copyright © 2011-2022 走看看