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
    
    
  • 相关阅读:
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次编程作业
    第一次博客作业
    computed vs methods
    v-for
    jQuery事件绑定on()、bind()与delegate() 方法详解
    开题
  • 原文地址:https://www.cnblogs.com/absolute/p/5690344.html
Copyright © 2011-2022 走看看