zoukankan      html  css  js  c++  java
  • Leetcode-探索 | 加一

    给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。

    最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

    你可以假设除了整数 0 之外,这个整数不会以零开头。

    示例 1:

    输入: [1,2,3]
    输出: [1,2,4]
    解释: 输入数组表示数字 123。
    

    示例 2:

    输入: [4,3,2,1]
    输出: [4,3,2,2]
    解释: 输入数组表示数字 4321。

    ——————————————————————————————————————————————

    这题很自然想到模拟手算,注意进位和一些值的合法状态范围等,如在编写下面的AC代码时就出现了list.append之后之前的arry_len失效而未察觉的情况。

     1 class Solution(object):
     2     def plusOne(self, digits):
     3         """
     4         :type digits: List[int]
     5         :rtype: List[int]
     6         """
     7         
     8         # calculate by hand
     9         array_len = len(digits)
    10         
    11         if array_len > 0:
    12             c = 0
    13             digits[array_len-1] += 1
    14             if digits[array_len-1] > 9:
    15                 digits[array_len-1] -= 10
    16                 c = 1
    17             for i in range(array_len-2, -1, -1):
    18                 digits[i] += c
    19                 if digits[i] > 9:
    20                     digits[i] -= 10
    21                     c = 1
    22                 else:
    23                     c = 0
    24             if c == 1:
    25                 digits.append(1)
    26                 for i in range(0, array_len):
    27                     digits[i+1] = digits[i]
    28                 digits[0] = 1
    29             
    30             return digits
    31         else:
    32             return [1]

    模拟手算或者这种模拟思想也具有一定程度的启发性。

  • 相关阅读:
    C#创建ActiveX
    easy-ui 中的事件触发 (tree)
    程序目录
    微信公众平台开发
    Redis分片机制
    Redis主从切换
    Redis主从复制
    Redis持久化机制
    Redis缓存击穿、缓存穿透、缓存雪崩
    Redis与数据库数据一致性
  • 原文地址:https://www.cnblogs.com/qinziang/p/9201839.html
Copyright © 2011-2022 走看看