1. 程式人生 > 實用技巧 >LeetCode #163. Missing Ranges

LeetCode #163. Missing Ranges

題目

163. Missing Ranges


解題方法

設定start = lower,遍歷nums,如果當前位置的數字nums[i]不等於start,就把nums[i]-1作為end,呼叫self.fun(start,end),把區間加進去。每次迴圈最後設定start = nums[i] + 1,最後一次迴圈結束後如果start != upper + 1,則需要將最後一個區間加進去。
時間複雜度:O(n)
空間複雜度:O(n)


程式碼

class Solution:
    def fun(self, start, end):
        if start == end:
            return str(start)
        else:
            return str(start) + "->" + str(end)
    
    def findMissingRanges(self, nums: List[int], lower: int, upper: int) -> List[str]:
        start = lower
        rat = []
        
        for i in range(len(nums)):
            if nums[i] != start:
                rat.append(self.fun(start, nums[i] - 1))
            start = nums[i] + 1
        else:
            if start != upper + 1:
                rat.append(self.fun(start, upper))
        
        return rat