边工作边刷题:70天一遍leetcode: day 72

Missing Range

要点:题简单,这类题的特点都是记录上一步的状态,比如这题是end
错误点:

  • 三种情况:一是连续的,即和上一个end差1,而是中间只差1个数,没有’->',最后是大于1,有’->'
  • 看清题:upper/lower是boundary,不一定出现在nums里。为了统一,把upper+1放入nums,同时初始end=lower-1
  • 区间是[end+1, num-1]
  • 别忘了每次更新end

https://repl.it/Cjvy/2

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

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

# Hide Company Tags Google
# Hide Tags Array
# Hide Similar Problems (M) Summary Ranges

class Solution(object):
    def findMissingRanges(self, nums, lower, upper):
        """
        :type nums: List[int]
        :type lower: int
        :type upper: int
        :rtype: List[str]
        """
        end = lower
        res = []
        for num in nums+[upper+1]:
            if num!=end:
                if num-1!=end:
                    res.append("{}->{}".format(end, num-1))
                else:
                    res.append(str(num-1))
            end = num+1 # error: don't forget
        
        return res
        
sol = Solution()
assert sol.findMissingRanges([0, 1, 3, 50, 75], 0, 99)==['2', '4->49', '51->74', '76->99']

转载于:https://www.cnblogs.com/absolute/p/5815657.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值