Medium
You are given an integer array nums
. You need to create a 2D array from nums
satisfying the following conditions:
nums
.Return the resulting array. If there are multiple answers, return any of them.
Note that the 2D array can have a different number of elements on each row.
Example 1:
Input: nums = [1,3,4,1,2,3,1]
Output: [[1,3,4,2],[1,3],[1]]
Explanation: We can create a 2D array that contains the following rows: - 1,3,4,2 - 1,3 - 1 All elements of nums were used, and each row of the 2D array contains distinct integers, so it is a valid answer. It can be shown that we cannot have less than 3 rows in a valid array.
Example 2:
Input: nums = [1,2,3,4]
Output: [[4,3,2,1]]
Explanation: All elements of the array are distinct, so we can keep all of them in the first row of the 2D array.
Constraints:
1 <= nums.length <= 200
1 <= nums[i] <= nums.length
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<List<Integer>> findMatrix(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
int n = nums.length;
int[] freq = new int[n + 1];
for (int num : nums) {
if (res.size() < ++freq[num]) {
res.add(new ArrayList<>());
}
res.get(freq[num] - 1).add(num);
}
return res;
}
}