題目
難度:中等
給定一個無重複元素的有序整數數組,返回數組區間範圍的彙總。
示例 1:
輸入: [0,1,2,4,5,7]
輸出: [“0->2”,“4->5”,“7”]
解釋: 0,1,2 可組成一個連續的區間; 4,5可組成一個連續的區間。
示例 2:
輸入: [0,2,3,4,6,8,9]
輸出: [“0”,“2->4”,“6”,“8->9”]
解釋: 2,3,4 可組成一個連續的區間;8,9 可組成一個連續的區間。
解題思路
- 分兩種情況,第一種是區間範圍只有1個值,第二種是區間範圍大於1
- 根據這兩種情況分別處理,噹噹前值與下一個值差值爲1的時候,說明區間範圍大於1,此時改變start和end指針的值分別指向區間的下限和上限。
- 當區間不連續時,該區間斷開,重置start和end指針的值。
代碼
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int start = -1, end = -1;
for(int i = 0; i < nums.size(); i++){
if(i < nums.size() - 1 && nums[i] + 1 == nums[i + 1]){
if(start == -1) start = nums[i];
end = nums[i];
}else{
if(start == -1) res.push_back(to_string(nums[i]));
else res.push_back(to_string(start) + "->" + to_string(end + 1));
start = -1;
end = -1;
}
}
return res;
}
};