Leetcode——989. 数组形式的整数加法

题目:

对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。

提示:

  1. 1 <= A.length <= 10000
  2. 0 <= A[i] <= 9
  3. 0 <= K <= 10000
  4. 如果 A.length > 1,那么 A[0] != 0
示例 1:
输入:A = [1,2,0,0], K = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
示例 2:
输入:A = [2,7,4], K = 181
输出:[4,5,5]
解释:274 + 181 = 455

题解:

由于A的长度太大,所以没法用整型来进行计算处理。在网上白嫖到一个方法,就是让输入的K与数组A的最后一位数进行相加,然后将取模得到的数remind放入到答案数组中,然后K整除10,反复操作。但是可能会出现数值K的值会比A的“值”要大,所以要留意一下最后K是否需要插入。(在一开始使用vector的insert方法时,发现时间复杂度太高了,所以需要修改)

代码

class Solution {
     
public:
    vector<int> addToArrayForm(vector<int>& A, int K) {
     
        vector<int> ans;
        int len = A.size();
        for(int i = len - 1;i >= 0;i--){
     
            K += A[i];
            int remind = K % 10;
            ans.insert(ans.begin(),remind);
            K /= 10;
        }
        
        while(K){
     
            int remind = K % 10;
            ans.insert(ans.begin(),remind);
            K /= 10;
        }
        return ans;
    }
};

你可能感兴趣的:(数据结构,数据结构,leetcode,c++)