LeetCode第228題:彙總區間(中等)

題目

難度:中等
給定一個無重複元素的有序整數數組,返回數組區間範圍的彙總。

示例 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
  2. 根據這兩種情況分別處理,噹噹前值與下一個值差值爲1的時候,說明區間範圍大於1,此時改變start和end指針的值分別指向區間的下限和上限。
  3. 當區間不連續時,該區間斷開,重置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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章