解法)"/>
汇总区间(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++解法)
发布评论