LeetCode 989. 数组形式的整数加法
作者:互联网
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
示例 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
示例 3:
输入:A = [2,1,5], K = 806
输出:[1,0,2,1]
解释:215 + 806 = 1021
示例 4:
输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1
输出:[1,0,0,0,0,0,0,0,0,0,0]
解释:9999999999 + 1 = 10000000000
提示:
1 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
如果 A.length > 1,那么 A[0] != 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution { public: vector<int> addToArrayForm(vector<int>& A, int K) { int K_length=get_bit_length(K);//获取K的位数 int B_length = max(int(K_length),int(A.size()));//获取B的位数 vector<int> B(B_length); int apos=A.size()-1; int ksize=K_length; int add=0; int num; for(int i=B.size()-1;i >=0;i--){//把A+K保存入B num=A[apos]+K%10+add;//每一位的和,两数相加加上进位 B[i]=(num)%10; K/=10; if(apos!=0) apos--; else A[apos]=0; if(num>9) //设置进位标志 add=1; else add=0; } if(add==1)//最高位位进位 { B.insert(B.begin(),1); } return B; } int get_bit_length(int c){//计算一个数的位数 int K_length=0; while(c>0){ c/=10; K_length++; } return K_length; } };
标签:989,示例,int,length,add,apos,数组,加法,LeetCode 来源: https://www.cnblogs.com/mydrizzle/p/12725627.html