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
  • 相关阅读:
    数据访问技术系列课程 笔记(2) ADO.NET 连接方式进行数据访问
    Modern C# 系列课程笔记 第11节 深入委托和事件
    idea 将项目托管到 Git 报错:Can't finish Gitee sharing process
    ADO.Net
    WebService
    2013年了
    201301杂谈
    流程图
    出错列表
    杂谈4 2012年8月15日开
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7246118.html
Copyright © 2011-2022 走看看