zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    DELPHI 各版本下载
    一个好的网站,学习前端
    没那么难,谈CSS的设计模式
    一个前端的自我修养
    如何学习Javascript
    jQuery WeUI V0.4.2 发布
    微信官方开源UI库-WeUI
    js与php传递参数
    ?js调用PHP里的变量,怎么弄?
    Liferay7 BPM门户开发之23: 了解内置工作流(Kaleo Workflow)
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7246118.html
Copyright © 2011-2022 走看看