163. Missing Ranges


做题历程:

  1. 应该做了不止1次,本次耗时20分钟独立解出

本题并不难,但是一次做出来并不容易。这种题其实没有什么经典算法可以依赖,纯粹就是解决问题。。大概说一下本题需要做好的亮点:

  1. lower - 1upper + 1塞入nums这样可以简化步骤
  2. 但是这就好注意MAX_INTMIN_INT的问题,不过这也不难解决,因为nums本身是一个sorted array,而MIN_INT - 1MAX_INT + 1都会破坏这个结构,所以可以轻易识别出来,就不会得到错误的答案了

代码如下:

class Solution {
public:
    vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
        vector<string> res;
        nums.insert(nums.begin(), lower - 1);
        nums.push_back(upper + 1);
        for (int i = 0; i < nums.size() - 1; ++i) {
            if (nums[i] + 1 >= nums[i+1]) {
                continue;
            }
            else if (nums[i] + 2 == nums[i+1]) {
                res.push_back(to_string(nums[i] + 1));
            }
            else {
                res.push_back(to_string(nums[i] + 1) + "->" + to_string(nums[i+1] - 1));
            }
        }
        return res;
    }
};

results matching ""

    No results matching ""