汇总区间(C++解法)

编程入门 行业动态 更新时间:2024-10-11 03:23:29

汇总区间(C++<a href=https://www.elefans.com/category/jswz/34/1764302.html style=解法)"/>

汇总区间(C++解法)

题目

给定一个  无重复元素 的 有序 整数数组 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"

C++代码

#include <iostream>
#include <vector>
#include <string>
using namespace std;/*
* 汇总区间问题
* 判断区间范围,转换程数值放入字符串数组中
*/
vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;int i = 0;int n = nums.size();while (i < n) {int low = i;++i;while (i < n && nums[i] == nums[i - 1] + 1) {++i;}int high = i - 1;string temp = to_string(nums[low]);if (low < high) {temp.append("->");temp.append(to_string(nums[high]));}ret.push_back(move(temp));}return ret;}int main() {vector<int> nums = { 0,1,2,4,5,7 };vector<string> ret = summaryRanges(nums);for (int i = 0; i < ret.size(); ++i) {cout << ret[i] << " ";}cout << endl;return 0;
}

问题

to_string() 函数:将数值转换为对应的字符串。

move() 函数:将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。

append() 函数:向 string 的后面追加字符或字符串。

更多推荐

汇总区间(C++解法)

本文发布于:2023-12-05 12:15:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1664186.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:解法   区间

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!