Welcome to Subscribe On Youtube
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 <= 1000
1 <= nums[i] <= 105
Solutions
Solution 1: Simulation
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$.
-
class Solution { public int[] separateDigits(int[] nums) { List<Integer> res = new ArrayList<>(); for (int x : nums) { List<Integer> t = new ArrayList<>(); for (; x > 0; x /= 10) { t.add(x % 10); } Collections.reverse(t); res.addAll(t); } int[] ans = new int[res.size()]; for (int i = 0; i < ans.length; ++i) { ans[i] = res.get(i); } return ans; } }
-
class Solution { public: vector<int> separateDigits(vector<int>& nums) { vector<int> ans; for (int x : nums) { vector<int> t; for (; x; x /= 10) { t.push_back(x % 10); } while (t.size()) { ans.push_back(t.back()); t.pop_back(); } } return ans; } };
-
class Solution: def separateDigits(self, nums: List[int]) -> List[int]: ans = [] for x in nums: t = [] while x: t.append(x % 10) x //= 10 ans.extend(t[::-1]) return ans
-
func separateDigits(nums []int) (ans []int) { for _, x := range nums { t := []int{} for ; x > 0; x /= 10 { t = append(t, x%10) } for i, j := 0, len(t)-1; i < j; i, j = i+1, j-1 { t[i], t[j] = t[j], t[i] } ans = append(ans, t...) } return }
-
function separateDigits(nums: number[]): number[] { const ans: number[] = []; for (let num of nums) { const t: number[] = []; while (num) { t.push(num % 10); num = Math.floor(num / 10); } ans.push(...t.reverse()); } return ans; }
-
impl Solution { pub fn separate_digits(nums: Vec<i32>) -> Vec<i32> { let mut ans = Vec::new(); for &num in nums.iter() { let mut num = num; let mut t = Vec::new(); while num != 0 { t.push(num % 10); num /= 10; } t.into_iter() .rev() .for_each(|v| ans.push(v)); } ans } }