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
    
    
  • 相关阅读:
    大小端判断
    引用计数
    STL_ALGORITHM_H
    书单一览
    GIT版本控制系统(二)
    JS随机数生成算法
    STL学习笔记--临时对象的产生与运用
    乱序优化与GCC的bug
    你的灯亮着吗?
    交换机和路由器
  • 原文地址:https://www.cnblogs.com/absolute/p/5690344.html
Copyright © 2011-2022 走看看