c语言练习74: 分割数组中数字的数位

分割数组中数字的数位

题⽬描述: 给你⼀个正整数数组 nums ,请你返回⼀个数组 answer ,你需要将 nums 中每个整数进⾏数位 分割后,按照 nums 中出现的 相同顺序 放⼊答案数组中。

对⼀个整数进⾏数位分割,指的是将整数各个数位按原本出现的顺序排列成数组。

⽐⽅说,整数 10921 ,分割它的各个数位得到 [1,0,9,2,1] 。

• ⽰例 1:

输⼊:nums = [13,25,83,77]

输出:[1,3,2,5,8,3,7,7]

解释:

• 分割 13 得到 [1,3] 。

• 分割 25 得到 [2,5] 。

• 分割 83 得到 [8,3] 。

• 分割 77 得到 [7,7] 。

answer = [1,3,2,5,8,3,7,7] 。

answer 中的数字分割结果按照原数字在数组中的相同顺序排列。

算法思路:

定义⼀个数组 ans 作为返回值,定义⼀个变量 tmp 暂时存储数组中的数反转后的值,然后将 tmp 按低位到⾼位放⼊数组 ans 并且记录数组⻓度,最后更新⻓度并且返回 ans 数组指针即可。

int* separateDigits(int* nums, int numsSize, int* returnSize) {
	int i = 0;
	//定义数组作为返回值并且分配内存
	int* ans = malloc(6 * 1000 * sizeof(int));
	int k = 0;
	for (i = 0; i < numsSize; i++) {
		int n = nums[i];
		int j = 0;
		int tmp = 0;
		//反转n放⼊tmp
		while (n) {
			tmp = tmp * 10 + n % 10;
			n /= 10;
		}
		//正向存储到ans
		while (tmp) {
			ans[k++] = tmp % 10;
			tmp /= 10;
		}
	}
	*returnSize = k;
	return ans;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值