2553. 分割数组中数字的数位
2553. 分割数组中数字的数位
给你一个正整数数组 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 中的数字分割结果按照原数字在数组中的相同顺序排列。
示例 2:
输入:nums = [7,1,3,9]
输出:[7,1,3,9]
解释:nums 中每个整数的分割是它自己。
answer = [7,1,3,9] 。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 105
思路
使用List存值,转为数组返回
倒序遍历nums,通过取num(temp) 对 10 的模来获取最后一位,加入list中
如此循环,直到num(temp)为0止
由于结果是倒序的,所以新建一个数组,取list的倒序值即可
使用StringBuilder(让不同的结构优化时间复杂度也是一门学问)
使用StringBuilder拼接每一个num
新建一个数组,将字符转为int即可
代码
使用List存值,转为数组返回
class Solution {
public int[] separateDigits(int[] nums) {
List<Integer> list = new ArrayList<>();
for (int i = nums.length - 1; i >= 0; i--) {
int temp = nums[i];
while (temp > 0) {
list.add(temp % 10);
temp = temp / 10;
}
}
int[] result = new int[list.size()];
for (int i = 0; i < result.length; i++) {
result[i] = list.get(result.length - 1 - i);
}
return result;
}
}
使用StringBuilder
class Solution {
public int[] separateDigits(int[] nums) {
StringBuilder sb = new StringBuilder();
for (int i : nums) {
sb.append(i);
}
int[] result = new int[sb.length()];
for (int i = 0; i < sb.length(); ++i) {
result[i] = sb.charAt(i) - '0';
}
return result;
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 孤寂灬无痕
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果