python算法

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

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

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

注:首先想到的解决办法是将数组转化成int类型进行加1运算,但是此方法存在越界限制,操作系统为64和32位操作系统,int类型数字有可能超限,此方法放弃

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法一:(逆序)先将数组元素取反,然后从最低进行判断,若判断位置为不为9时,该位加1;为9时此位数置0,并对下一位进行判断

    def plusOne(self, digits: [int]) -> [int]:
        digits1 = list(reversed(digits))
        for i in range(0,len(digits1),1):
            if digits1[i] != 9:
                digits1[i] += 1
                print(i)
                return list(reversed(digits1))
            digits1[i] = 0
        digits1[len(digits1)-1]=0
        digits1.append(1)
        return list(reversed(digits1))

方法二:(借鉴LeetCode)

  • 遍历digits,判断每位是否为9,若不是则+1并返回,否则将此位置0
  • 对于digits里全为9的情况,需要扩展list,并将首位置为1
class Solution:
    def plusOne(self, digits: [int]) -> [int]:
        for i in range(len(digits) - 1,-1,-1):
            if digits[i] != 9:
                digits[i] += 1
                return digits
            digits[i] = 0
        digits[0] = 1
        digits.append(0)
        return digits

 

posted @ 2019-12-08 11:59  吃瓜群众有话说  阅读(370)  评论(0编辑  收藏  举报