給定**無重複、已排序**整數陣列,合併連續區間並格式化輸出。單個數輸出 "x",連續區間輸出 "a->b"。
Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"]
維護區間起點 start,遍歷陣列,當 nums[i+1] != nums[i] + 1 時區間結束,輸出並更新 start = i+1。
class Solution {
public:
vector summaryRanges(vector& nums) {
vector res;
if (nums.empty()) return res;
int start = 0;
for (int i = 0; i < nums.size(); ++i) {
// 區間結束條件:到達末尾 或 下一個不連續
if (i + 1 == nums.size() || nums[i+1] != nums[i] + 1) {
if (start == i)
res.push_back(to_string(nums[i]));
else
res.push_back(to_string(nums[start]) + "->" + to_string(nums[i]));
start = i + 1;
}
}
return res;
}
};
O(n),單次遍歷。O(1) 額外空間(不計輸出)。to_string (C++11) 簡化整數轉字串。