给定一个排序的整数数组 nums ,其中元素的范围在 闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间。
示例:
输入: nums = [0, 1, 3, 50, 75], lower = 0 和 upper = 99,
输出: ["2", "4->49", "51->74", "76->99"]
#include <vector> #include <string> class Solution { public: vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { vector<string> vec; string str=""; //nums数组为空时,对应lower==upper和lower!=upper两种情况 if(nums.size()==0){ if(lower==upper) {str+=to_string(lower); vec.push_back(str); return vec;} str+=to_string(lower); str+='-'; str+='>'; str+=to_string(upper); vec.push_back(str); return vec; } //处理一下lower和nums[0]之间关系 if(nums[0]!=lower) { if(nums[0]-1==lower) { str+=(to_string(lower)); vec.push_back(str); } else { str+=(to_string(lower)); str+='-'; str+='>'; str+=(to_string(nums[0]-1)); vec.push_back(str); } } //处理nums[1]到nums[nums.size()-1]之间的关系 for(int i=1;i<nums.size();i++){ str=""; if(nums[i]-nums[i-1]==1) continue; if(nums[i]-nums[i-1]==2) { str+=to_string(nums[i]-1); vec.push_back(str); } else{ str+=to_string(nums[i-1]+1); str+='-'; str+='>'; str+=to_string(nums[i]-1); vec.push_back(str); } } //处理nums[nums.size()-1]到upper之间关系 if(nums[nums.size()-1]!=upper){ str=""; if(nums[nums.size()-1]+1==upper) { str+=to_string(upper); vec.push_back(str); } else{ str+=to_string(nums[nums.size()-1]+1); str+='-'; str+='>'; str+=to_string(upper); vec.push_back(str); } } return vec; } };
class Solution: def findMissingRanges(self, nums: List[int], lower: int, upper: int) -> List[str]: vec = [] low = lower - 1 nums.append(upper+1) for num in nums: dis = num - low if dis == 2: vec.append(str(low + 1)) elif dis > 2: vec.append(str(low + 1) + "->" + str(num - 1)) low = num return vec
标签:upper,lower,string,nums,vec,str,空间,缺失,163 From: https://www.cnblogs.com/jianqiao123/p/17013357.html