【LeetCode163】缺失的区间(to_string)
【摘要】
文章目录
一、题目二、思路三、代码
一、题目
二、思路
因为是有设定边界的,所以首先需要将lower-1 插入到nums的最前方(在vector中可以直接insert), 将 upp...
一、题目
二、思路
因为是有设定边界的,所以首先需要将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;
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/123838279
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)