列表

详情


6303. 分割数组中数字的数位

给你一个正整数数组 nums ,请你返回一个数组 answer ,你需要将 nums 中每个整数进行数位分割后,按照 nums 中出现的 相同顺序 放入答案数组中。

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

 

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

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> separateDigits(vector<int>& nums) { } };

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))]

上一题