• [LeetCode] 228. Summary Ranges 总结区间


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

    Example 1:

    Input:  [0,1,2,4,5,7]
    Output: ["0->2","4->5","7"]
    Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.
    

    Example 2:

    Input:  [0,2,3,4,6,8,9]
    Output: ["0","2->4","6","8->9"]
    Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.

    Java:

    class Solution {
        public List<String> summaryRanges(int[] nums) {
            List<String> list=new ArrayList();
            if(nums.length==1){
                list.add(nums[0]+"");
                return list;
            }
            for(int i=0;i<nums.length;i++){
                int a=nums[i];
                while(i+1<nums.length&&(nums[i+1]-nums[i])==1){
                    i++;
                }
                if(a!=nums[i]){
                    list.add(a+"->"+nums[i]);
                }else{
                    list.add(a+"");
                }
            }
            return list;       
        }
    }  

    Python:

    class Solution:
        # @param {integer[]} nums
        # @return {string[]}
        def summaryRanges(self, nums):
            ranges = []
            if not nums:
                return ranges
    
            start, end = nums[0], nums[0]
            for i in xrange(1, len(nums) + 1):
                if i < len(nums) and nums[i] == end + 1:
                    end = nums[i]
                else:
                    interval = str(start)
                    if start != end:
                        interval += "->" + str(end)
                    ranges.append(interval)
                    if i < len(nums):
                        start = end = nums[i]
    
            return ranges  

    Python:

    class Solution(object):
        def summaryRanges(self, nums):
            """
            :type nums: List[int]
            :rtype: List[str]
            """
            
            ranges = []
            for n in nums:
                if not ranges or n > ranges[-1][-1] + 1:
                    ranges += [],
                ranges[-1][1:] = n,
    
            return ['->'.join(map(str, r)) for r in ranges]  

    Python:

    class Solution(object):
        def summaryRanges(self, nums):
            """
            :type nums: List[int]
            :rtype: List[str]
            """
            ranges, r = [], []
            for n in nums:
                if n-1 not in r:
                    r = []
                    ranges += r,
                r[1:] = n,
                print r, ranges
            return ['->'.join(map(str, r)) for r in ranges]
    

    C++:

    class Solution {
    public:
        vector<string> summaryRanges(vector<int>& nums) {
            vector<string> res;
            int i = 0, n = nums.size();
            while (i < n) {
                int j = 1;
                while (i + j < n && nums[i + j] - nums[i] == j) ++j;
                res.push_back(j <= 1 ? to_string(nums[i]) : to_string(nums[i]) + "->" + to_string(nums[i + j - 1]));
                i += j;
            }
            return res;
        }
    };
    

    C++:

    class Solution {
    public:
        vector<string> summaryRanges(vector<int>& nums) {           
            const int size_n = nums.size();
            vector<string> res;
            if ( 0 == size_n) return res;
            for (int i = 0; i < size_n;) {
                int start = i, end = i;
                while (end + 1 < size_n && nums[end+1] == nums[end] + 1) end++;
                if (end > start) res.push_back(to_string(nums[start]) + "->" + to_string(nums[end]));
                else res.push_back(to_string(nums[start]));
                i = end+1;
            }
            return res;
        }
    };
    

      

    类似题目: 

    [LeetCode] 163. Missing Ranges 缺失区间

      

    All LeetCode Questions List 题目汇总

  • 相关阅读:
    【HDU】4092 Nice boat(多校第四场1006) ——线段树 懒惰标记 Prime
    【POJ】2528 Mayor's posters ——离散化+线段树 Prime
    【HDU】1754 I hate it ——线段树 单点更新 区间最值 Prime
    C语言 linux环境基于socket的简易即时通信程序 Prime
    Java异常处理
    重载和重写的区别与联系
    SQL Server的优点与缺点
    Servlet基础
    C语言图形编程
    socket通讯,TCP,UDP,HTTP的区别
  • 原文地址:https://www.cnblogs.com/lightwindy/p/9640386.html
Copyright © 2020-2023  润新知