|
8 | 8 | class Solution {
|
9 | 9 | public:
|
10 | 10 | vector<string> summaryRanges(vector<int>& nums) {
|
11 | | - if (nums.empty()) return {}; |
12 | | - if (nums.size() == 1) return { to_string(nums[0]) }; |
13 | 11 | vector<string> ans;
|
14 | | - int prev = nums[0]; |
15 | | - for (int i = 1; i < nums.size(); i++) { |
16 | | - if ((long)nums[i] - nums[i - 1] != 1) { |
17 | | - if (prev != nums[i - 1]) |
18 | | - ans.push_back(to_string(prev) + string("->") + to_string(nums[i - 1])); |
19 | | - else |
20 | | - ans.push_back(to_string(prev)); |
21 | | - prev = nums[i]; |
| 12 | + int i = 0; |
| 13 | + int n = nums.size(); |
| 14 | + // 分组循环 |
| 15 | + while (i < n) { |
| 16 | + int start = i; |
| 17 | + while (i < n-1 && nums[i] + 1 == nums[i + 1]) |
| 18 | + i++; |
| 19 | + if (nums[i] == nums[start]) { |
| 20 | + ans.push_back(to_string(nums[i])); |
| 21 | + } else { |
| 22 | + ans.push_back(to_string(nums[start]) + string("->") + to_string(nums[i])); |
22 | 23 | }
|
23 | | - } |
24 | | - int last = nums[nums.size() - 1]; |
25 | | - if (prev != last) { |
26 | | - ans.push_back(to_string(prev) + string("->") + to_string(last)); |
27 | | - } else { |
28 | | - ans.push_back(to_string(last)); |
| 24 | + i++; |
29 | 25 | }
|
30 | 26 | return ans;
|
31 | 27 | }
|
|
0 commit comments