题目链接: https://leetcode.com/problems/missing-ranges/
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.
For example, given [0, 1, 3, 50, 75]
, lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
思路: 几年之后重新回来刷题发现很多数据过不掉了,一些边界问题,基本思路还是一样,多了一些比如可能会出现相同的值,整数边界值,为了防止溢出,我们把要用到的临时值都申请成long
代码如下:
class Solution {
public:
vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) {
long expected = lower, newUpper = upper;
vector<string> ret;
for(int i = 0; i <= nums.size(); i++) {
if(i < nums.size() && nums[i] < expected) continue;
long val = (i==nums.size())?newUpper+1:nums[i];
if(expected != val && expected + 1 == val) {
ret.push_back(to_string(expected));
} else if(expected != val){
ret.push_back(to_string(expected) + "->" + to_string(val-1));
}
expected = val+1;
}
return ret;
}
};