Skip to content

Commit c151df1

Browse files
committed
Improved tasks 3574, 3575
1 parent f3451c0 commit c151df1

File tree

2 files changed

+18
-19
lines changed
  • src/main/kotlin/g3501_3600

2 files changed

+18
-19
lines changed

src/main/kotlin/g3501_3600/s3574_maximize_subarray_gcd_score/Solution.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,40 @@ class Solution {
1212
mx = max(mx, x)
1313
}
1414
val width = 32 - Integer.numberOfLeadingZeros(mx)
15-
val lowbitPos: Array<MutableList<Int>> = Array<MutableList<Int>>(width) { i: Int -> ArrayList<Int>() }
16-
val intervals = Array<IntArray?>(width + 1) { IntArray(3) }
15+
val lowBitPos: Array<MutableList<Int>> = Array<MutableList<Int>>(width) { i: Int -> ArrayList<Int>() }
16+
val intervals = Array<IntArray>(width + 1) { IntArray(3) }
1717
var size = 0
1818
var ans: Long = 0
1919
for (i in nums.indices) {
2020
val x = nums[i]
2121
val tz = Integer.numberOfTrailingZeros(x)
22-
lowbitPos[tz].add(i)
22+
lowBitPos[tz].add(i)
2323
for (j in 0..<size) {
24-
intervals[j]!![0] = gcd(intervals[j]!![0], x)
24+
intervals[j][0] = gcd(intervals[j][0], x)
2525
}
26-
intervals[size]!![0] = x
27-
intervals[size]!![1] = i - 1
28-
intervals[size]!![2] = i
26+
intervals[size][0] = x
27+
intervals[size][1] = i - 1
28+
intervals[size][2] = i
2929
size++
3030
var idx = 1
3131
for (j in 1..<size) {
32-
if (intervals[j]!![0] != intervals[j - 1]!![0]) {
33-
intervals[idx]!![0] = intervals[j]!![0]
34-
intervals[idx]!![1] = intervals[j]!![1]
35-
intervals[idx]!![2] = intervals[j]!![2]
32+
if (intervals[j][0] != intervals[j - 1][0]) {
33+
intervals[idx][0] = intervals[j][0]
34+
intervals[idx][1] = intervals[j][1]
35+
intervals[idx][2] = intervals[j][2]
3636
idx++
3737
} else {
38-
intervals[idx - 1]!![2] = intervals[j]!![2]
38+
intervals[idx - 1][2] = intervals[j][2]
3939
}
4040
}
4141
size = idx
4242
for (j in 0..<size) {
43-
val g = intervals[j]!![0]
44-
val l = intervals[j]!![1]
45-
val r = intervals[j]!![2]
43+
val g = intervals[j][0]
44+
val l = intervals[j][1]
45+
val r = intervals[j][2]
4646
ans = max(ans, g.toLong() * (i - l))
47-
val pos = lowbitPos[Integer.numberOfTrailingZeros(g)]
48-
val minL = if (pos.size > k) max(l, pos.get(pos.size - k - 1)!!) else l
47+
val pos = lowBitPos[Integer.numberOfTrailingZeros(g)]
48+
val minL = if (pos.size > k) max(l, pos[pos.size - k - 1]) else l
4949
if (minL < r) {
5050
ans = max(ans, g.toLong() * 2 * (i - minL))
5151
}

src/main/kotlin/g3501_3600/s3575_maximum_good_subtree_score/Solution.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ class Solution {
3838
isOk[i] = valid
3939
}
4040
tree = Array(n) { initialCapacity: Int -> ArrayList(initialCapacity) }
41-
Arrays.setAll<MutableList<out Any?>?>(tree, IntFunction { initialCapacity: Int -> ArrayList(initialCapacity) })
4241
val root = 0
4342
for (i in 1..<n) {
4443
tree[par[i]].add(i)
@@ -49,7 +48,7 @@ class Solution {
4948

5049
private fun dfs(u: Int): LongArray {
5150
var dp = LongArray(full)
52-
Arrays.fill(dp, neg)
51+
dp.fill(neg)
5352
dp[0] = 0
5453
if (isOk[u]) {
5554
dp[mask[u]] = `val`[u].toLong()

0 commit comments

Comments
 (0)