Given a sorted integer array wherethe range of elements are in the inclusive range [lower, upper], return its missing ranges.

Have you met this question in a real interview?

Yes

Example

Given nums =[0, 1, 3, 50, 75], lower =0and upper =99
return["2", "4->49", "51->74", "76->99"].

class Solution:
    """
    @param: nums: a sorted integer array
    @param: lower: An integer
    @param: upper: An integer
    @return: a list of its missing ranges
    """

    #thinking process
    #scan the list and compare with its previous value to identiy the gap
    #may encounter three senarios
    #[0, 1, 3, 50, 51, 52, 53, 54, 99]
    #遇到区间问题,可以将其转化为 段

    #lower -> 1st - > 2nd -> 3rd -> 4th -> upper

    #corner cases
    #if the input list is empty
    #if the int exceeds int limit 2^31




    def findMissingRanges(self, nums, lower, upper):
        # write your code here
        if not nums or len(nums) == 0:
            if upper - lower > 1:
                return ["->".join([str(lower), str(upper)])]
            else:
                return [str(lower)]
        ans = []

        for i in range(len(nums)):
            if lower < nums[i]:
                if nums[i] - lower > 1:
                    ans.append("->".join([str(lower), str(nums[i] - 1)]))
                else:
                    ans.append(str(lower))
            lower = nums[i] + 1

        if lower < upper:
            ans.append("->".join([str(lower), str(upper)]))
        elif lower == upper:
            ans.append(str(lower))

        return ans

results matching ""

    No results matching ""