2610. Convert an Array Into a 2D Array With Conditions
You are given an integer array nums. You need to create a 2D array from nums satisfying the following conditions:
- The 2D array should contain only the elements of the array nums.
- Each row in the 2D array contains distinct integers.
- The number of rows in the 2D array should be minimal.
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.
정수 배열 nums가 제공됩니다. 다음 조건을 만족하는 숫자로 2D 배열을 만들어야 합니다.
- 2D 배열에는 배열 nums의 요소만 포함되어야 합니다.
- 2D 배열의 각 행에는 고유한 정수가 포함되어 있습니다.
- 2D 배열의 행 수는 최소화되어야 합니다. 결과 배열을 반환합니다. 답변이 여러 개인 경우 답변 중 하나를 반환하세요.
2D 배열은 각 행에 서로 다른 수의 요소를 가질 수 있습니다
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
코드 1
- 정수의 개수를 통해 행의 위치를 파악한다.
class Solution {
fun findMatrix(nums: IntArray): List<List<Int>> {
val count = HashMap<Int, Int>()
val answer = mutableListOf<MutableList<Int>>()
for (n in nums) {
val row = count.getOrDefault(n, 0)
if (answer.size == row) {
answer.add(mutableListOf())
}
answer[row].add(n)
count[n] = row + 1
}
return answer
}
}
코드 2
- 배열의 총 행 수는 정수의 개수 중 가장 큰 수이다.
class Solution {
fun findMatrix(nums: IntArray): List<List<Int>> {
val hm = HashMap<Int, Int>()
nums.forEach { hm[it] = hm.getOrDefault(it, 0) + 1 }
val max = hm.values.maxOrNull()!!
val answer = MutableList(max) { mutableListOf<Int>() }
for ((k, v) in hm) {
for (i in 0 until v) {
answer[i].add(k)
}
}
return answer
}
}
'LeetCode > Array & Hashing' 카테고리의 다른 글
[LeetCode][Kotlin] 799. Champagne Tower (0) | 2024.09.25 |
---|---|
[LeetCode][Kotlin] 68. Text Justification (0) | 2024.09.23 |
[LeetCode][Kotlin] 1291. Sequential Digits (0) | 2024.09.05 |