• 163. Missing Ranges



    June-19-2019

    这傻逼题居然做了好久,动态维持lower bound,然后楞做。

    重点在于edge case的处理。200 thump up, 1000+ thump down都是被edge case恶心的。。
    一个是数组里可以有重复的。。
    一个是边界,upper == nums[最后]的话, lower = temp + 1就变成INT最小值了。。所以不得不多加了个判断。用PYTHON是不是就没这个问题了,用JAVA导致各种被boundary恶心

        public List<String> findMissingRanges(int[] nums, int lower, int upper) { 
            List<String> result = new ArrayList<>();
            
            for (int i = 0; i < nums.length; i ++) {
                // srsly? duplicates?
                if (i != 0 && nums[i] == nums[i - 1]) continue;
                int temp = nums[i];
                if (temp == lower) {
                } else {
                    if (temp - 1 == lower) {
                        result.add(lower + "");
                    } else {
                        result.add(lower + "->" + (temp - 1));
                    }
                }
                if (temp == upper) {
                    // in case temp == Integer.MAX_VALUE which makes temp + 1 == Integer.MIN_VALUE
                    return result;
                } else {
                    lower = temp + 1;
                }
            }
            if (upper == lower) {
                result.add(upper + "");
            } else if (upper > lower) {
                result.add(lower + "->" + upper);
            }
            return result;
        }
    

    选值如果通过 upper - lower = Rindex - Lindex来跳过段数,应该会减少很多时间。。

  • 相关阅读:
    Java面向对象设计——购物车·
    查找

    栈和队列
    指针
    数组
    第四次博客——函数
    第三次博客作业
    第二次博客作业
    Java购物车大作业01
  • 原文地址:https://www.cnblogs.com/reboot329/p/11058076.html
Copyright © 2020-2023  润新知