加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

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

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

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

 

代码v1.0

从数字进制的角度来分析,首位进位的唯一情况就是后位全是9,只要后面位有一位加1不进位,就不会轮到首位,循环就可以跳出。

注意 list 加元素的区别,分别是 insert append extend +

http://smilejay.com/2013/02/add-items-to-a-list-in-python/

class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        i=len(digits)-1
        while i>=0 :
            if digits[i]+1<10:
                digits[i]+=1
                return digits
            else:
                digits[i]=0
                if(i==0):
                    digits.insert(0,1)
                    return digits
                i-=1

 

 

代码 v2.0

在python中,字符即list,可以把list转换成数字,然后再把数字转换成字符,最后再转回list

range(start, [stop], step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
class Solution:
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        #数组转换成数字
        intNum=0
        for i in range(len(digits)):
            intNum=intNum*10+digits[i]
        intNum+=1
        #数字转换成字符
        strNum=str(intNum)
        #字符转换成数组
        res=[]
        for i in range(len(strNum)):
            res.append(int(strNum[i]))
        return res

 

posted on 2019-03-30 13:06  雪原那么远  阅读(243)  评论(0编辑  收藏  举报

导航