zoukankan      html  css  js  c++  java
  • 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来跳过段数,应该会减少很多时间。。

  • 相关阅读:
    1015
    1016
    1014
    1002
    1010
    1006
    动态规划1001
    动态规划1002
    使用EF框架调用带有输出参数(output)的存储过程
    工程地质相关知识
  • 原文地址:https://www.cnblogs.com/reboot329/p/11058076.html
Copyright © 2011-2022 走看看