题目
给定一个 无重复元素 的 有序 整数数组 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() 函数:将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。文章来源:https://www.toymoban.com/news/detail-722239.html
append() 函数:向 string 的后面追加字符或字符串。文章来源地址https://www.toymoban.com/news/detail-722239.html
到了这里,关于汇总区间(C++解法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!