【LeetCode163】缺失的区间(to_string)

举报
野猪佩奇996 发表于 2022/03/31 22:17:39 2022/03/31
【摘要】 文章目录 一、题目二、思路三、代码 一、题目 二、思路 因为是有设定边界的,所以首先需要将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]=50nums[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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。