87. 数组表示数字,对数字加1 ------------------------------------ 给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1:: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2:: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 这个题关键在于进位运算,数组的每一个元素只存储一个数字,如果数字为9,再加一,那就为10, 就需要进行进位加法。代码如下:: import unittest class Solution: def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int] """ digits[-1] += 1 i = len(digits) new_digits = [0]+digits #构造新的队列,比前面多一个零,方便进位 print(new_digits) while(new_digits[i]>=10): new_digits[i] = new_digits[i]-10 new_digits[i-1] += 1 i = i-1 if (new_digits[0]==0): return new_digits[1:] else: return new_digits class TestplusOneFunc(unittest.TestCase): """Test case""" def test_plusOne(self): """Test method hammingWeight()""" s =Solution() self.assertEqual([1,2,4], s.plusOne([1,2,3])) self.assertEqual([4,3,2,2], s.plusOne([4,3,2,1])) self.assertEqual([1, 0], s.plusOne([9])) self.assertEqual([1, 0, 0, 0], s.plusOne([9, 9, 9])) if __name__ == '__main__': unittest.main()