leetcode 989. 数组形式的整数加法

本文讲解了一种处理大整数加减问题的算法,重点在于如何通过迭代处理每一位,确保进位并保持结果在数组形式下,适用于超出longlong范围的数值。通过倒序遍历、逐位相加和进位操作,实现高效的数组加法计算。

在这里插入图片描述
思路:这种题目的问题在于,你不能直接将数组转化成数字然后加减。因为测试用例里会有超出long long能表达的数字的数。一个数据结构装不下。因此只能老老实实各个数相加,算进位来做。代码不难,背住就好。

vector<int> addToArrayForm(vector<int>& num, int k) 
    {
        vector<int> res;
        int n = num.size();
        //倒着遍历
        for(int i = n - 1; i >= 0; --i)
        {
            int curSum = num[i] + k % 10;
            k /= 10;
            //若curSum>=10,则需要进位,下一个需要加的位+1,即k++
            if(curSum >= 10)
            {
                k++;
                curSum -=10;//同时保证放入res的都是小于10的数
            }
            res.push_back(curSum);
        }
        while(k > 0)//若k还剩下,全部加进去
        {
            res.push_back(k % 10);
            k /= 10;
        }
        reverse(res.begin(), res.end());//反转后返回
        return res;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值