【LeetCode163】缺失的区间(to_string)

一、题目

在这里插入图片描述

二、思路

因为是有设定边界的,所以首先需要将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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/123838279
今日推荐