美文网首页
letcode[066] 加一

letcode[066] 加一

作者: 一起学分析 | 来源:发表于2019-01-03 12:39 被阅读8次
题目066

题目地址:加一

思路1:自拟思路——一本正经的暴力拆逻辑

1、列表最后一个数字+1
2、当最后一个为9时,最后一位变为0,倒数第二位+1
3、如果从最后起有n个9,则这n个全部变为0,倒数n+1位+1
4、如果全部是9,全部变为0,再在首位添加1
总结: 看完思路2再说。
用时:68 ms

digits=[9,0,1,9,9]
def plusOne1(digits):
    #如果全部是9,则特殊处理
    if len(set(digits))==1 &  (9 in set(digits)):
        result=[1]+[0]*len(digits)
    #统计从末尾倒数有几个连续的9
    else:
        result=digits.copy()
        result.reverse()
        length=0
        for i in result:
            if i!=9:
                break
            else:
                length+=1
        #如果没有9
        if length==0:
            result[0]+=1
            result.reverse()
        #如果有少于列表长度的9
        else:
            result=[0]*length+result[length:]
            result[length]+=1
            result.reverse()
    return result

思路2:自拟思路——这不就是数字相加么

通过str和int的转换,然后组合分拆结果。
总结: 生活好苦,题刷了半天才恍然大悟。
用时:44 ms

def plusOne2(digits):
    d_str=[str(i) for i in digits]
    d=int("".join(d_str))
    d+=1
    d_list=list(str(d))
    result=[int(i) for i in d_list]
    return result

相关文章

  • letcode[066] 加一

    题目地址:加一 思路1:自拟思路——一本正经的暴力拆逻辑 1、列表最后一个数字+12、当最后一个为9时,最后一位变...

  • Median of Two Sorted Arrays

    标签(空格分隔): C++ 算法 LetCode 数组 每日算法——letcode系列 问题 Median of ...

  • LeetCode066 加一

    题目: 思路:从后到前遍历有三种情况: 1.末位无进位;比如45 -> 46,因为末位无进位,也不可能产生进位,直...

  • Add Two Numbers

    每日算法——letcode系列 标签: 算法 C++ LetCode 问题 Add Two Numbers Di...

  • Longest Common Prefix

    标签: C++ 算法 LetCode 字符串 每日算法——letcode系列 问题 Longest Common ...

  • Roman to Integer

    标签: C++ 算法 LetCode 字符串 每日算法——letcode系列 问题 Roman to Intege...

  • 3Sum

    标签(空格分隔): C++ 算法 LetCode 数组 每日算法——letcode系列 问题 Longest Co...

  • ZigZag Conversion

    每日算法——letcode系列 问题 ZigZag Conversion Difficulty: Easy The...

  • 算法练习进阶过程

    LetCode做题 看时间复杂度,也就是耗时

  • Longest Substring Without Repeat

    每日算法——letcode系列 问题 Longest Substring Without Repeating Ch...

网友评论

      本文标题:letcode[066] 加一

      本文链接:https://www.haomeiwen.com/subject/pmjhlqtx.html