E2553.分割数组中数字的数位
implementation, https://leetcode.cn/problems/separate-the-digits-in-an-array/
给你一个正整数数组 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 <= 10001 <= nums[i] <= 10^5
这道题的要求是将数组 nums 中的每个整数拆分为单个数字,并按照原有的顺序合并成一个新的数组。
解题思路
- 遍历数组:遍历
nums中的每一个整数。 - 转换数位:对于每一个整数,我们需要获取它的每一个数字位。在 Python 中,最简单的方法是将整数转换为字符串。
- 提取并存储:遍历转换后的字符串,将每个字符转回整数,并依次存入结果列表
answer中。 - 返回结果:遍历结束后,返回
answer即可。
代码实现
python
class Solution:
def separateDigits(self, nums: List[int]) -> List[int]:
answer = []
# 遍历输入数组中的每一个数字
for num in nums:
# 将数字转为字符串,以便遍历它的每一位
s = str(num)
for char in s:
# 将字符转回整数并加入结果数组
answer.append(int(char))
return answer另一种更简洁的写法(列表推导式)
你可以使用嵌套的列表推导式来完成这个任务:
python
class Solution:
def separateDigits(self, nums: List[int]) -> List[int]:
return [int(digit) for num in nums for digit in str(num)]复杂度分析
- 时间复杂度:
,其中 是数组 nums的长度,是数字的最大位数(在本题中,数字最大为 ,即 )。我们需要遍历每个数字的所有位。 - 空间复杂度:
,我们需要一个额外的数组来存储所有的数位。