题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。
思路
这里我直接用reduce()方法将数组转化为一个整数,然后加1,然后使用map()方法输出加一后的数组
reduce()接收两个参数,一个是函数,一个是可迭代对象,如下:
#这里的函数是:
lambda x,y:10*x+y
#也可以写成:
def add(x,y):
return 10*x+y
可迭代对象就是输入的数组,reduce把add函数的结果继续和序列digits的下一个元素做累积计算上,计算完就将序列转化成整数了。
map()方法也接收两个参数,一个是函数,一个是可迭代对象,这里先将获取的整数digi转化成字符串str(digi),然后map将int函数作用在字符串的每个字符中,这样就将字符串转化成了int型的序列
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
from functools import reduce
digi = reduce(lambda x,y:10*x+y,digits)+1
return map(int,str(digi))