66. Plus One(python+cpp)

xiaoxiao2025-04-27  15

题目:

Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit. You may assume the integer does not contain any leading zero, except the number 0 itself. Example 1:

Input: [1,2,3] Output: [1,2,4] Explanation: The array represents the integer 123.

Example 2:

Input: [4,3,2,1] Output: [4,3,2,2] Explanation: The array represents the integer 4321.

解释: 把数组看成是一个数字,返回这个数字+1后的结果,也用字符串表示。 如果最后一位不是9,直接最后一位+1返回即可。 如果最后一位是9,要考虑进位的情况,找到最后一个不是9的数字,对其+1,其后归0。 这样看来其实也不用考虑最后一位是不是9,只要找到最后一位不是9的那一位即可。 python代码:

class Solution: def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int] """ n=len(digits) i=n-1 while(i>=0 and digits[i]==9): i-=1 if i<0: return [1]+[0]*n; else: digits[i]+=1 return digits[:i+1]+[0]*(n-1-i)

c++代码:

class Solution { public: vector<int> plusOne(vector<int>& digits) { int n=digits.size(); int i=n-1; while(i>=0 &&digits[i]==9) i--; vector<int>zeros(n-1-i,0); if (i<0) { zeros.insert(zeros.begin(),1); return zeros; } else { digits[i]+=1; vector<int>new_digits(digits.begin(),digits.begin()+i+1); new_digits.insert(new_digits.end(),zeros.begin(),zeros.end()); return new_digits; } } };

总结: 和大数加法还是不一样的,刚开始做的时候直接把数组转换成string再转换成int做的,这样不仅速度慢而且很没有意义。

转载请注明原文地址: https://www.6miu.com/read-5029283.html

最新回复(0)