zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 63

    Summary Ranges

    要点:简单题,但如果用start标记求解,有一重要点,即最终边界条件是in。这里就有一个问题,什么时候用in,rule就是看下一段的开始条件和本段的结束条件在哪:如果本段结束等于下一段开始,那么最后的边界条件是in(因为这个相当于一个dummy的下一段),本题就是这样。而比如Reverse Words in a String这题,本段结束是下一个字符为空,并不是下一段开始,所以用in-1(也就是条件为i==n-1或者下一个字符为空)。更进一步说,这是因为结束点要是最后一个字符位置(不包括空格),所以必须在字符串范围之内判断,而不能超过。

    class Solution(object):
        def summaryRanges(self, nums):
            """
            :type nums: List[int]
            :rtype: List[str]
            """
            n = len(nums)
            res = []
            if n==0: return res
            start = 0
            pre = nums[0]
            for i in range(1, n+1):
                if i==n or nums[i]!=pre+1:
                    if i-start-1<1:
                        res.append(str(nums[start]))
                    else:
                        res.append("{0}->{1}".format(nums[start],nums[i-1]))
                    start=i
                    if start<n: pre=nums[start]
                else:
                    pre=nums[i]
            return res
    
    
  • 相关阅读:
    Learning_the_bash_Shell_Third_Edition 15/n
    Learning_the_bash_Shell_Third_Edition 14/n
    Learning_the_bash_Shell_Third_Edition 13/n
    cvb源码分析,resful规范,drf,drf序列化组件,95
    rest_framework登录组件,权限组件
    forms组件
    分页器
    基于ajax提交数据
    回顾django内容
    多表操作
  • 原文地址:https://www.cnblogs.com/absolute/p/5690344.html
Copyright © 2011-2022 走看看