浅谈 数组形式的整数加法 问题

数组形式的整数加法

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

给定非负整数 X 的数组形式 A,返回整数 X + K 的数组形式。

思路:
例:
输入:A = [1, 2, 0, 0], K = 34
输出:[1, 2, 3, 4]
解释:1200 + 34 = 1234

  1. 判断数组长度是否为 0,为 0 则直接将余数添加到结果数组。
  2. 不为 0,则进行低位相加,如上 0 + 4,如不大于等于 10 则无进位,直接添加到结果数组,有进位将 K / 10 后加一用 K 来存储进位,再 0 + 3,依次进行下去。
    如果 K 的长度大于数组长度,K 未除 10 到 0,或长度相等最后 K++ 了,则按第一步继续执行。
  3. 将结果数组转置返回。
class Solution {
    
    
public:
	vector<int> addToArrayForm(const vector<int>& A, int K) {
    
    
		auto len = A.size();
		vector<int> res;
		if (len == 0) {
    
    
			while (K > 0) {
    
    
				res.push_back(K % 10);
				K /= 10;
			}
		}
		else {
    
    
			while (len-- > 0) {
    
    
				auto sum = A[len] + K % 10;
				K /= 10;
				if (sum >= 10) {
    
    
					sum -= 10;
					K++;
				}
				res.push_back(sum);
			}
			while (K > 0) {
    
    
				res.push_back(K % 10);
				K /= 10;
			}
		}
		reverse(res.begin(), res.end());
		return res;
	}
};

猜你喜欢

转载自blog.csdn.net/weixin_48033173/article/details/112984898
今日推荐