題目鏈接
tag:
- Medium机蔗;
question:
??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.
思路:
??這道題給定我們一個有序數組湾戳,讓我們匯總區(qū)間,具體來說就是讓我們找出連續(xù)的序列嘴高,然后首尾兩個數字之間用個“->"來連接,那么我只需遍歷一遍數組即可再登,每次檢查下一個數是不是遞增的遇伞,如果是字旭,則繼續(xù)往下遍歷,如果不是了莺奔,我們還要判斷此時是一個數還是一個序列欣范,一個數直接存入結果变泄,序列的話要存入首尾數字和箭頭“->"。我們需要兩個變量i和j恼琼,其中i是連續(xù)序列起始數字的位置妨蛹,j是連續(xù)數列的長度,當j為1時晴竞,說明只有一個數字蛙卤,若大于1,則是一個連續(xù)序列噩死,代碼如下:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int i = 0, n = nums.size();
while (i < n) {
int j = 1;
while (i + j < n && (long)nums[i + j] - nums[i] == j)
++j;
res.push_back(j <= 1 ? to_string(nums[i]) : to_string(nums[i]) + "->" + to_string(nums[i + j - 1]));
i += j;
}
return res;
}
};