• [LeetCode] Summary Ranges


    Given a sorted integer array without duplicates, return the summary of its ranges.

    For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

    解题思路

    实现代码

    C++:

    // Runtime: 0 ms
    class Solution {
    public:
        vector<string> summaryRanges(vector<int>& nums) {
            vector<string> results;
            int start = 0;
            for (int i = 1; i <= nums.size(); i++)
            {
                if (i == nums.size() || nums[i - 1] + 1 < nums[i])
                {
                    string temp = num2str(nums[start]);
                    if (start + 1 < i)
                    {
                        temp += "->";
                        temp += num2str(nums[i - 1]);
                    }
                    results.push_back(temp);
                    start = i;
                }
            }
    
            return results;
        }
    
        string num2str(long long n)
        {
            if (n == 0)
            {
                return "0";
            }
            string temp = "";
            bool flag = false;
            if (n < 0)
            {
                flag = true;
                n = -n;
            }
    
            while (n)
            {
                temp = (char)(n % 10 + '0') + temp;
                n /= 10;
            }
            if(flag)
            {
                temp = '-' + temp;
            }
    
            return temp;
        }
    };

    Java:

    // Runtime: 268 ms
    public class Solution {
        public List<String> summaryRanges(int[] nums) {
            List<String> res = new ArrayList<String>();
            int begin = 0;
            for (int i = 1; i <= nums.length; i++){
                if (i == nums.length || nums[i] > nums[i-1] + 1){
                    StringBuilder sb = new StringBuilder();
                    sb.append(nums[begin]);
                    if (i > begin + 1){
                        sb.append("->");
                        sb.append(nums[i-1]);
                    }
                    res.add(sb.toString());
                    begin = i;
                }
            }
    
            return res;
        }
    }

    Python:

    # Runtime: 36 ms
    class Solution:
        # @param {integer[]} nums
        # @return {string[]}
        def summaryRanges(self, nums):
            x, size = 0, len(nums)
            ans = []
            while x < size:
                c, r = x, str(nums[x])
                while (x + 1) < size and nums[x+1] == nums[x] + 1:
                    x += 1
                if x > c:
                    r += '->' + str(nums[x])
                ans.append(r)
                x += 1
            return ans
  • 相关阅读:
    The Fifth Season Gym
    SuperHyperMarket Gym
    Far Manager Gym
    Game Map------Gym
    Happy Number
    Pursuing the Happiness
    Digit sum-----The Preliminary Contest for ICPC Asia Shanghai 2019
    Light bulbs------The Preliminary Contest for ICPC Asia Shanghai 2019
    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
    HDU 1203 I NEED A OFFER!
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7246118.html
Copyright © 2020-2023  润新知