66. Plus One(python+cpp)

题目:

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做的,这样不仅速度慢而且很没有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值