分割数组中数字的数位
题⽬描述: 给你⼀个正整数数组 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;
}