LeetCode-989-数组形式的整数加法(完整代码C语言)

LeetCode-989-数组形式的整数加法(完整代码C语言)

题目

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例

示例 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码(C语言)


#include<stdio.h> 
#include<math.h>
#include<malloc.h>

int* addToArrayForm(int* A, int ASize, int K, int *returnSize){
	int Size; 
	int KSize;
	printf("%d\n",K);
	if(K==0){
		KSize=1;
	}
	else{
		KSize=(int)log10(K) +1;
	}
	printf("%d\n",KSize);
	
	if(ASize>=KSize){
//		*returnSize=ASize;
		Size=ASize;	
	}
	else{
//		*returnSize=KSize;
		Size=KSize;			
	}
	printf("%d\n",Size);	
	
	int *result=(int*)malloc(sizeof(int)*(Size+1));		
	int *K_K=(int*)malloc(sizeof(int)*Size);
	int *K_A=(int*)malloc(sizeof(int)*Size);

	int Y=0;
	
	for(int j=0;j<Size;j++){//K的数组 
		if(j<Size-KSize){
			K_K[j]=0;
			printf("%d %d ",K_K[j],j);		
		}
		else{
			Y=K/pow(10,Size-j-1);
			K_K[j]=Y%10;
			printf("%d %d ",K_K[j],j);	
		}
	}
	printf("\n");
	
	for(int j=0;j<Size;j++){//A的数组 
		if(j<Size-ASize){
			K_A[j]=0;
			printf("%d %d ",K_A[j],j);	
		}
		else{
			K_A[j]=A[j-Size+ASize];
			printf("%d %d ",K_A[j],j);	
		}
	}
	printf("\n");
	
	int K_K_K=0;//存储进位 

	for(int i=Size;i>0;i--){	
		result[i]=(K_A[i-1]+K_K[i-1]+K_K_K)%10;
		printf("%d %d %d ",i,K_K_K,result[i]);

		K_K_K=(K_A[i-1]+K_K[i-1]+K_K_K)/10;
//		K_K_K=0;//进位初始化 		
		printf("\n");
	} 
	result[0]=K_K_K;
	if(result[0]==0){
		int *point=result;
		result=point+1;
	}
	
	return result;
}
int main()
{
	int nums[1] = {0};
	int K = 23;
	int *returnSize;
	int* p = addToArrayForm(nums, 1, K,returnSize);
//	int size=sizeof(*p);
	for(int i=0;i<2;i++){
		printf("%d ",p[i]);
	}
	return 0;
}

解读

!!!!!

刚学着用博客,然后误删了。。。。
没心情重写了
直接贴代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值