leetcode 66.plus one

1.题目

You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.

Increment the large integer by one and return the resulting array of digits.

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

2.思路

考虑一下特殊的情况:

                1.我们只需要考虑反向遍历一下数组

                2.如果最后一个数不等于9.直接最后一个数+1 返回就可以了

                3.如果为9,我们+1之后,还需要考虑进位

所以我们设置一个进位carry = 1 ; 每次让数组的数+carry,每次取它的当前位的值和进位标志

为防止都是999之类的情况,最后再来检查标志位

3.代码

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {

        int len = digits.size();
        int carry = 1 ; //设置一个进位标志位
        for (int i = len -1 ; i >= 0; --i)
        {
            int sum  = digits[i] +carry ;
            digits[i] = sum %10 ; //除10 取模
            carry = sum / 10; //除10 取当前进位
        }
        if(carry != 0 )
        { 
           digits.insert(digits.begin(), carry); 
           //这里insert(digits.begin(), carry)是 把carry插入到digits最前面
        }
        return digits;
    }
    
}; 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值