美文网首页
228. Summary Ranges (E)

228. Summary Ranges (E)

作者: Ysgc | 来源:发表于2020-11-25 00:50 被阅读0次

    You are given a sorted unique integer array nums.

    Return the smallest sorted list of ranges that cover all the numbers in the array exactly. That is, each element of nums is covered by exactly one of the ranges, and there is no integer x such that x is in one of the ranges but not in nums.

    Each range [a,b] in the list should be output as:

    "a->b" if a != b
    "a" if a == b

    Example 1:

    Input: nums = [0,1,2,4,5,7]
    Output: ["0->2","4->5","7"]
    Explanation: The ranges are:
    [0,2] --> "0->2"
    [4,5] --> "4->5"
    [7,7] --> "7"
    Example 2:

    Input: nums = [0,2,3,4,6,8,9]
    Output: ["0","2->4","6","8->9"]
    Explanation: The ranges are:
    [0,0] --> "0"
    [2,4] --> "2->4"
    [6,6] --> "6"
    [8,9] --> "8->9"
    Example 3:

    Input: nums = []
    Output: []
    Example 4:

    Input: nums = [-1]
    Output: ["-1"]
    Example 5:

    Input: nums = [0]
    Output: ["0"]

    Constraints:

    0 <= nums.length <= 20
    -231 <= nums[i] <= 231 - 1
    All the values of nums are unique.
    nums is sorted in ascending order.


    我的答案:

    class Solution {
    public:
        vector<string> summaryRanges(vector<int>& nums) {
            vector<string> ans;
            if (nums.empty()) return ans;
            
            int left = nums[0];
            int right = left;
            for (int i=1; i<nums.size(); ++i) {
                if (nums[i] == nums[i-1]+1) {
                    right = nums[i];
                }
                else {
                    if (left == right) {
                        ans.push_back(to_string(left));
                    }
                    else {
                        ans.push_back(to_string(left) + "->" + to_string(right));
                    }
                    left = nums[i];
                    right = left;
                }
            }
            
            if (left == right) {
                ans.push_back(to_string(left));
            }
            else {
                ans.push_back(to_string(left) + "->" + to_string(right));
            }
            
            return ans;
        }
    };
    

    Runtime: 0 ms, faster than 100.00% of C++ online submissions for Summary Ranges.
    Memory Usage: 7.2 MB, less than 78.20% of C++ online submissions for Summary Ranges.

    相关文章

      网友评论

          本文标题:228. Summary Ranges (E)

          本文链接:https://www.haomeiwen.com/subject/fviriktx.html