zoukankan      html  css  js  c++  java
  • 剑指Offer-二维数组中的查找

     最简单易懂且效率也很高的代码如下:

    public class Jz01 {
    
        public boolean Find(int target, int[][] array) {
    
            if (array == null || array.length == 0) {
                return false;
            }
    
            //本题的关键是不能从左上角或者右下角开始找
            //而是要从左下角或者右上角的元素找
            int innerLength = array[0].length;
            int temp = 0;
            //我这里从左下角的元素开始找
            for (int i = array.length - 1; i >= 0; i--) {
                for (int j = temp; j < innerLength; j++) {
                    if (target == array[i][j]) {
                        return true;
                    } else if (target < array[i][j]) {
                        //这里用临时变量做了微小的优化,
                        // 也就是当这一行的这个元素比目标值大的时候,
                        // 我们可以直接去上一行的跟这个对应的下标的元素对比即可
                        temp = j;
                        break;
                    }
                }
            }
            return false;
        }
    }
    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    USACO6.4-The Primes
    ZOJ2112--Dynamic Rankings (动态区间第k大)
    Havel定理
    HDU5107---K-short Problem (线段树区间 合并、第k大)
    POJ2104-- K-th Number(主席树静态区间第k大)
    poj2409 & 2154 polya计数+欧拉函数优化
    CodeForces
    HDU
    HDU
    Gym
  • 原文地址:https://www.cnblogs.com/gslgb/p/14968475.html
Copyright © 2011-2022 走看看