一、题目
二、思路
因为是有设定边界的,所以首先需要将lower-1 插入到nums的最前方(在vector中可以直接insert), 将 upper+1插入nums末尾(这里用insert或者push_back都可以的) 。然后遍历数组nums:
若nums[i+1] - nums [i] = 1时,两个相邻数已经连续了,所以不做处理, i++
若nums[i+1] - nums [i] = 2时,加入 nums[i]+1
若nums[i+1] - nums [i] > 2 时, 加入区间 nums[i]+1, nums[i+1]-1
小结:
其实就是通过遍历nums数组,比较nums[i]和nums[i+1],从而确定答案数组的内容,如根据nums[3]=50和nums[4]=75,确定往答案数组push进51->74字符元素的过程。
并且根据三种情况分类讨论。
to_string(a)将a数字转为字符串,不同字符串可以通过+拼接,并且注意单引号是字符型,双引号才是字符串型。
三、代码
class Solution { public: vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { vector<string>ans; nums.insert(nums.begin(), lower - 1); nums.push_back(upper + 1); int size = nums.size(); for(int i = 0; i < size - 1; i++){ if(nums[i + 1] - nums[i] == 1){ continue; }else if(nums[i + 1] - nums[i] == 2){ ans.push_back(to_string(nums[i] + 1)); }else{ //nums[i+1]-nums[i]>2时 ans.push_back(to_string(nums[i] + 1) + "->" + to_string(nums[i+1] - 1)); } } return ans; } };