989 LeetCode 数组形式的整数加法

题目描述:
在这里插入图片描述
思路:
首先把K写成数组形式
然后把A和K相加
注意进位

代码如下:

class Solution {
public:
    vector<int> addToArrayForm(vector<int>& A, int K) {
        vector<int>res;
        vector<int>sum;
        vector<int>num;
        while(K!=0){
            num.push_back(K%10);
            K/=10;
        }
        if(A.size()>num.size()){
            int j=A.size()-1;
            int carry=0;
            for(int i=0;i<num.size();i++){
                sum.push_back((num[i]+A[j]+carry)%10);
                carry=(num[i]+A[j]+carry)/10;
                j--;
            }
            for(j;j>=0;j--){
                sum.push_back((carry+A[j])%10);
                carry=(carry+A[j])/10;
            }
            if(carry!=0)
            sum.push_back(carry);
        }
        if(A.size()<num.size()){
            int j=0;
            int carry=0;
            for(int i=A.size()-1;i>=0;i--){
                sum.push_back((A[i]+num[j]+carry)%10);
                carry=(A[i]+num[j]+carry)/10;
                j++;
            }
            for(j;j<num.size();j++){
                sum.push_back((carry+num[j])%10);
                carry=(carry+num[j])/10;
            }
            if(carry!=0)
            sum.push_back(carry);
        }
        if(A.size()==num.size()){
            int carry=0;
            int j=0;
            for(int i=A.size()-1;i>=0;i--){
                sum.push_back((A[i]+num[j]+carry)%10);
                carry=(A[i]+num[j]+carry)/10;
                j++;
            }
            if(carry!=0)
            sum.push_back(carry);
        }
        for(int i=sum.size()-1;i>=0;i--){
            res.push_back(sum[i]);
        }
        return res;
    }
};
发布了158 篇原创文章 · 获赞 0 · 访问量 1610

猜你喜欢

转载自blog.csdn.net/peachzy/article/details/104651962