首页 > 编程语言 >力扣-228. 汇总区间(C++题解)

力扣-228. 汇总区间(C++题解)

时间:2023-08-26 16:44:32浏览次数:54  
标签:string nums -- 题解 back C++ 力扣 vector 区间

题目链接:https://leetcode.cn/problems/summary-ranges/description/
给定一个  无重复元素 的 有序 整数数组 \(nums\) 。

返回 恰好覆盖数组中所有数字最小有序 区间范围列表 。也就是说,\(nums\) 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 \(nums\) 的数字 \(x\) 。

列表中的每个区间范围 \([a,b]\) 应该按如下格式输出:

  • \("a->b"\) ,如果 \(a != b\)
  • \("a"\) ,如果 \(a == b\)

示例 1:

输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

提示:

  • \(0 <= nums.length <= 20\)
  • \(-2^{31} <= nums[i] <= 2^{31} - 1\)
  • \(nums\) 中的所有值都 互不相同
  • \(nums\) 按升序排列

代码:

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        vector<string> v;
        if(!nums.size()) return v;
        int l=0,r=0;
        for(int i=0; i<nums.size()-1; i++){
            if(nums[i]+1 == nums[i+1]){
                r++;
            }else{
                if(l!=r) v.push_back(to_string(nums[l]) + "->" + to_string(nums[r]));
                else v.push_back(to_string(nums[l]));
                r++;
                l = r;    
            }
        }
        if(l!=r) v.push_back(to_string(nums[l]) + "->" + to_string(nums[r]));
        else v.push_back(to_string(nums[l]));
        return v;
    }
};

标签:string,nums,--,题解,back,C++,力扣,vector,区间
From: https://www.cnblogs.com/cdjlx/p/17659055.html

相关文章

  • P2151 [SDOI2009] HH去散步 题解
    传送门简要题意:有\(n\)个人,\(m\)条无向边,走\(e\)条边,满足条件若第\(i\)条边为\(u->v\)则第\(i+1\)条边不能是\(v->u\),问\(s->t\)的方案有多少个,取模45989。因为要满足题目关于边的条件,所以我们考虑点边互换。将\(u-v\)的无向边一分为二变成\(u->v,v->u\),第\(i\)条边记录两个变......
  • [转]C++使用虚函数的时候,子类也要使用virtual关键字吗
    原文地址:https://blog.csdn.net/gao1440156051/article/details/45670715父类使用虚函数是为了让子类重写,那子类重写的时候也需要带virtual关键字吗?比如:classBase{virtualboolinit();};classDerived{virtualboolinit();//这里的vitual是必须的吗?好像不用也能编译通过呃…......
  • 【题解】CF1413C Perform Easily(双指针)
    【题解】CF1413CPerformEasily写篇题解水水经验~顺便增加一下RP~比较套路和简单的一道绿题。题目链接PerformEasily-洛谷|计算机科学教育新生态(luogu.com.cn)题意概述给你一个长度为\(6\)的\(a\)数组,和一个长度为\(n\)的\(b\)数组,要求将\(b\)数组内的每......
  • [CF1794E] Labeling the Tree with Distances 题解
    [CF1794E]LabelingtheTreewithDistances题解题目描述给你一个树,边权为\(1\)。给定\(n-1\)个数,你需要将这些数分配到\(n-1\)个节点上。一个点\(x\)是好的,当且仅当存在一种分配方案,所有被分配数的点到\(x\)的最短路径长度等于其被分配的数。求所有好点。思路从......
  • 力扣---228. 汇总区间
    给定一个 无重复元素 的 有序 整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输......
  • 1.2 金字塔原理-构建金字塔原理与问题解决
    一、构建金字塔原理与问题解决1.自上而下2.自下而上3.解决问题的过程界定问题详细描述问题的背景信息用SMART原理定义目标明确想要达到的成果以及衡量成功与否的标准分解问题关键分析以假设和最终结果为导向反复地进行假设和数据分析尽可能地简化分......
  • 网络规划设计师真题解析--IP地址(二)
    地址202.118.37.192/26是(25),地址192.117.17.255/22是(26)。(2018年真题)(25)A.网络地址B.组播地址C.主机地址D.定向广播地址(26)A.网络地址B.组播地址C.主机地址D.定向广播地址答案:(25)A(26)C解析:(25)202.118.37.192/26,建网比特数为/26,前三字节为24位,光看最后一字节192......
  • 【算法-二分查找】实现过程、C++代码示例以及实际应用
    二分查找简介:也称为折半查找,是一个在已排序数组中查找特定元素的搜索算法。它的工作原理是将有序数组分成两半,然后检查目标值是在左半部分还是右半部分,然后在所选择的那部分中继续查找。这一过程将不断地重复,直到找到目标值或确定目标值不在数组中。实现过程:1.初始化两个指针:lo......
  • C++STL函数
    1、排序算法描述键盘输入5个整数,使用vector进行存储,使用STL排序算法对元素进行排序(从大到小),再使用STL遍历算法输出元素。(元素和元素之间使用空格隔开)输入描述:键盘输入5个整数输出描述:输出排序后的元素,元素和元素之间使用空格隔开。#include<iostream>#include<ve......
  • wmctf的题解&&blindless&&exit_hook
    0x00好久不见2023.8.23夜里wm2023也是一个收获很大的比赛。只做了一个blindless,但是体会到了无泄露做出题来的奥妙。踩过的坑(学到的东西)包括但不限于调试要用docker,不然没符号表很痛苦有想法一定要及时记下来,很有可能是解题重点exit_hook的n种姿势(下面记录一下......