leetcode笔记--Summary Ranges

题目:难度(Easy)

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"].
Tags:Array
Similar Problems:(M) Missing Ranges

分析:i指向一个range片段的起始元素,指向录一个range片段的结束元素,当后一个数字与前一个数字的差大于1时,就将此range片段划开,开始收集这个range片段,然后继续向后观察。

代码实现:

class Solution(object):
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        if len(nums) == 0:
            return []
            
        #i指向一个range的起始元素,指向录一个range的结束元素
        i, j = 0, 1
        result = []
        while j < len(nums):
            #如果前后两个数字“不连续”
            if nums[j] - nums[j-1] > 1:
                if j - 1 == i:
                    #如果这个range片段里只有一个数字了
                    result.append(str(nums[i]))
                else:
                    result.append(str(nums[i]) + "->" + str(nums[j-1]))
                i = j
            j += 1
        #由于最后一次j自增后跳出循环,使得最后一个range还未加到result里
        if j - 1 == i:
            #如果最后一个range片段里只有一个数字了
            result.append(str(nums[i]))
        else:
            result.append(str(nums[i]) + "->" + str(nums[j-1]))
        return result


你可能感兴趣的:(LeetCode,array,python)