Skip to content

Commit e94f0ad

Browse files
add base sol for 2570
1 parent f3c05ab commit e94f0ad

File tree

3 files changed

+83
-3
lines changed

3 files changed

+83
-3
lines changed

.idea/other.xml

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contest/src/main/java/com/github/contest/array/AlternativeSolutionArray.kt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,47 @@ fun applyOperationsAlternativeSolution(nums: IntArray): IntArray {
6969

7070
return nums
7171

72+
}
73+
74+
/**
75+
* 2570. Merge Two 2D Arrays by Summing Values
76+
* AlternativeSolution
77+
*/
78+
79+
fun mergeArraysAlternativeSolution(nums1: Array<IntArray>, nums2: Array<IntArray>): Array<IntArray> {
80+
val result = mutableListOf<IntArray>()
81+
var i = 0
82+
var j = 0
83+
84+
while (i < nums1.size || j < nums2.size) {
85+
when {
86+
i == nums1.size -> {
87+
result.add(nums2[j])
88+
j++
89+
}
90+
91+
j == nums2.size -> {
92+
result.add(nums1[i])
93+
i++
94+
}
95+
96+
nums1[i][0] == nums2[j][0] -> {
97+
result.add(intArrayOf(nums1[i][0], nums1[i][1] + nums2[j][1]))
98+
i++
99+
j++
100+
}
101+
102+
nums1[i][0] < nums2[j][0] -> {
103+
result.add(nums1[i])
104+
i++
105+
}
106+
107+
else -> {
108+
result.add(nums2[j])
109+
j++
110+
}
111+
}
112+
}
113+
114+
return result.toTypedArray()
72115
}

contest/src/main/java/com/github/contest/array/ArrayLeetcode.kt

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,22 +98,48 @@ private fun IntArray.swap(from: Int, to: Int) {
9898
/**
9999
* 2161. Partition Array According to Given Pivot
100100
*/
101+
101102
fun pivotArray(nums: IntArray, pivot: Int): IntArray {
102103
if (nums.hasSingle()) return nums
103104
val res = mutableListOf<Int>()
104-
for (i in 0 until nums.size) {
105+
for (i in nums.indices) {
105106
if (nums[i] < pivot) res.add(nums[i])
106107
}
107-
for (i in 0 until nums.size) {
108+
for (i in nums.indices) {
108109
if (nums[i] == pivot) res.add(nums[i])
109110
}
110-
for (i in 0 until nums.size) {
111+
for (i in nums.indices) {
111112
if (nums[i] > pivot) res.add(nums[i])
112113
}
113114

114115
return res.toIntArray()
115116
}
116117

118+
/**
119+
* 2570. Merge Two 2D Arrays by Summing Values
120+
*/
121+
122+
123+
fun mergeArrays(nums1: Array<IntArray>, nums2: Array<IntArray>): Array<IntArray> {
124+
val map = mutableMapOf<Int, Int>()
125+
126+
for (pair in nums1) {
127+
val key = pair[0]
128+
val value = pair[1]
129+
map[key] = map.getOrDefault(key, 0) + value
130+
}
131+
132+
for (pair in nums2) {
133+
val key = pair[0]
134+
val value = pair[1]
135+
map[key] = map.getOrDefault(key, 0) + value
136+
}
137+
138+
return map.toSortedMap().map { (key, value) ->
139+
intArrayOf(key, value)
140+
}.toTypedArray()
141+
}
142+
117143

118144

119145

0 commit comments

Comments
 (0)