class Solution {
public:
vector<int> separateDigits(vector<int>& nums) {
}
};
6303. 分割数组中数字的数位
给你一个正整数数组 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
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 5.1 MB, 提交时间: 2023-02-06 09:47:36
func separateDigits(nums []int) (ans []int) { for _, x := range nums { i0 := len(ans) for ; x > 0; x /= 10 { ans = append(ans, x%10) } b := ans[i0:] for i, n := 0, len(b); i < n/2; i++ { b[i], b[n-1-i] = b[n-1-i], b[i] } } return }
python3 解法, 执行用时: 48 ms, 内存消耗: 15.1 MB, 提交时间: 2023-02-06 09:47:09
''' 从低到高枚举数位,翻转新插入的数字 ''' class Solution: def separateDigits(self, nums: List[int]) -> List[int]: ans = [] for x in nums: i0 = len(ans) while x: ans.append(x % 10) x //= 10 ans[i0:] = ans[i0:][::-1] # 忽略切片开销(毕竟你可以手动反转) return ans
python3 解法, 执行用时: 40 ms, 内存消耗: 15.2 MB, 提交时间: 2023-02-06 09:46:04
class Solution: def separateDigits(self, nums: List[int]) -> List[int]: return [d for x in nums for d in map(int, str(x))]