1、题目描述
Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7]
Output: [“0->2″,”4->5″,”7”]
Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
Example 2:
Input: [0,2,3,4,6,8,9]
Output: [“0″,”2->4″,”6″,”8->9”]
Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
2、问题描述:
- 给一排好序的数组,如果数组中的数字连续的那么将它们连接起来。
3、问题关键:
- 一个start和一个end,如果不是连续的,将前面的合并即可。
- 不要忘记最后一个区间。
- ** 不要忘记,只有一个数字的问题。**
4、C++代码:
class Solution {
public:
string rangeToString(int st, int ed) {//这是一个生成字符范围的函数。
if (st == ed) return to_string(ed);//注意,如果是一个数,那么直接tostring就就可以了。
return to_string(st) + "->" + to_string(ed);
}
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
if(nums.empty()) return res;
int st = nums[0], ed = st;
for (int i = 1; i < nums.size(); i ++) {
int x = nums[i];
if (x > ed + 1) {
res.push_back(rangeToString(st, ed));
st = ed = x; //区间合并为,定义新的起始值。
}
else ed ++;//否则end向后移动一格。
}
res.push_back(rangeToString(st, ed));//最后别忘记把最后一个区间加入。
return res;
}
};