2553. Separate the Digits in an Array
Description
Given an array of positive integers nums, return an array answer that consists of the digits of each integer in nums after separating them in the same order they appear in nums.
To separate the digits of an integer is to get all the digits it has in the same order.
- For example, for the integer
10921, the separation of its digits is[1,0,9,2,1].
Example 1:
Input: nums = [13,25,83,77] Output: [1,3,2,5,8,3,7,7] Explanation: - The separation of 13 is [1,3]. - The separation of 25 is [2,5]. - The separation of 83 is [8,3]. - The separation of 77 is [7,7]. answer = [1,3,2,5,8,3,7,7]. Note that answer contains the separations in the same order.
Example 2:
Input: nums = [7,1,3,9] Output: [7,1,3,9] Explanation: The separation of each integer in nums is itself. answer = [7,1,3,9].
Constraints:
1 <= nums.length <= 10001 <= nums[i] <= 105
Solutions
Solution 1: Simulation
Thinking
Split every integer into decimal digits, preserving order. Division by ten yields digits in reverse, so reverse each buffer before appending.
Split each number in the array into digits, then put the split numbers into the answer array in order.
The time complexity is \(O(n \times \log_{10} M)\), and the space complexity is \(O(n \times \log_{10} M)\). Where \(n\) is the length of the array \(nums\), and \(M\) is the maximum value in the array \(nums\).
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Solution 2
Thinking
Solution 1 splits arithmetically. Converting to a string walks digits from high to low and avoids the reverse; the output is the same.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |