Skip to content

Commit 321b781

Browse files
committed
Updated tags
1 parent 48ab9f4 commit 321b781

File tree

8 files changed

+51
-47
lines changed
  • src/main/kotlin/g3701_3800
    • s3722_lexicographically_smallest_string_after_reverse
    • s3723_maximize_sum_of_squares_of_digits
    • s3724_minimum_operations_to_transform_array
    • s3725_count_ways_to_choose_coprime_integers_from_rows
    • s3726_remove_zeros_in_decimal_representation
    • s3727_maximum_alternating_sum_of_squares
    • s3728_stable_subarrays_with_equal_boundary_and_interior_sum
    • s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array

8 files changed

+51
-47
lines changed

src/main/kotlin/g3701_3800/s3722_lexicographically_smallest_string_after_reverse/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3722_lexicographically_smallest_string_after_reverse
22

3-
// #Medium #Biweekly_Contest_168 #2025_10_28_Time_8_ms_(100.00%)_Space_45.74_MB_(100.00%)
3+
// #Medium #Binary_Search #Two_Pointers #Enumeration #Biweekly_Contest_168
4+
// #2025_10_28_Time_8_ms_(100.00%)_Space_45.74_MB_(100.00%)
45

56
class Solution {
67
fun lexSmallest(s: String): String {

src/main/kotlin/g3701_3800/s3723_maximize_sum_of_squares_of_digits/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3723_maximize_sum_of_squares_of_digits
22

3-
// #Medium #Biweekly_Contest_168 #2025_10_28_Time_16_ms_(94.44%)_Space_47.62_MB_(61.11%)
3+
// #Medium #Math #Greedy #Biweekly_Contest_168
4+
// #2025_10_28_Time_16_ms_(94.44%)_Space_47.62_MB_(61.11%)
45

56
class Solution {
67
fun maxSumOfSquares(places: Int, sum: Int): String {

src/main/kotlin/g3701_3800/s3724_minimum_operations_to_transform_array/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3724_minimum_operations_to_transform_array
22

3-
// #Medium #Biweekly_Contest_168 #2025_10_28_Time_10_ms_(83.33%)_Space_66.99_MB_(100.00%)
3+
// #Medium #Array #Greedy #Biweekly_Contest_168
4+
// #2025_10_28_Time_10_ms_(83.33%)_Space_66.99_MB_(100.00%)
45

56
import kotlin.math.abs
67
import kotlin.math.max

src/main/kotlin/g3701_3800/s3725_count_ways_to_choose_coprime_integers_from_rows/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3725_count_ways_to_choose_coprime_integers_from_rows
22

3-
// #Hard #Biweekly_Contest_168 #2025_10_28_Time_29_ms_(100.00%)_Space_51.80_MB_(100.00%)
3+
// #Hard #Array #Dynamic_Programming #Math #Matrix #Number_Theory #Combinatorics
4+
// #Biweekly_Contest_168 #2025_10_28_Time_29_ms_(100.00%)_Space_51.80_MB_(100.00%)
45

56
import kotlin.math.max
67

src/main/kotlin/g3701_3800/s3726_remove_zeros_in_decimal_representation/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3726_remove_zeros_in_decimal_representation
22

3-
// #Easy #Weekly_Contest_473 #2025_10_28_Time_2_ms_(73.91%)_Space_41.33_MB_(78.26%)
3+
// #Easy #Math #Simulation #Weekly_Contest_473
4+
// #2025_10_28_Time_2_ms_(73.91%)_Space_41.33_MB_(78.26%)
45

56
class Solution {
67
fun removeZeros(n: Long): Long {

src/main/kotlin/g3701_3800/s3727_maximum_alternating_sum_of_squares/Solution.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package g3701_3800.s3727_maximum_alternating_sum_of_squares
22

3-
// #Medium #Weekly_Contest_473 #2025_10_28_Time_9_ms_(100.00%)_Space_90.79_MB_(13.04%)
3+
// #Medium #Array #Sorting #Greedy #Weekly_Contest_473
4+
// #2025_10_28_Time_9_ms_(100.00%)_Space_90.79_MB_(13.04%)
45

56
import kotlin.math.abs
67
import kotlin.math.min
Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
11
package g3701_3800.s3728_stable_subarrays_with_equal_boundary_and_interior_sum
22

3-
// #Medium #Weekly_Contest_473 #2025_10_28_Time_146_ms_(60.00%)_Space_89.72_MB_(80.00%)
3+
// #Medium #Array #Hash_Table #Prefix_Sum #Weekly_Contest_473
4+
// #2025_10_29_Time_109_ms_(100.00%)_Space_82.32_MB_(88.89%)
45

56
class Solution {
67
fun countStableSubarrays(capacity: IntArray): Long {
7-
val n = capacity.size
8-
var res: Long = 0
9-
var pre: Long = 0
10-
val mpp: MutableMap<Long, MutableMap<Long, Long>> = HashMap()
11-
for (i in 0..<n) {
12-
if (mpp.containsKey(capacity[i].toLong())) {
13-
val t: MutableMap<Long, Long> = mpp[capacity[i].toLong()]!!
14-
val cnt = t[pre - capacity[i]]
15-
if (cnt != null) {
16-
res += cnt
8+
var sum: Long = 0
9+
val map: MutableMap<Int, MutableMap<Long, Int>> = HashMap()
10+
var index = 0
11+
var ans: Long = 0
12+
for (c in capacity) {
13+
sum += c.toLong()
14+
var elementMap = map[c]
15+
if (elementMap == null) {
16+
elementMap = HashMap()
17+
map[c] = elementMap
18+
elementMap[sum] = 1
19+
} else {
20+
var orDefault = elementMap.getOrDefault(sum - 2 * c, 0)
21+
elementMap[sum] = elementMap.getOrDefault(sum, 0) + 1
22+
if (c == 0 && capacity[index - 1] == 0) {
23+
orDefault--
1724
}
25+
ans += orDefault.toLong()
1826
}
19-
pre += capacity[i].toLong()
20-
val t = mpp.computeIfAbsent(capacity[i].toLong()) { _: Long -> HashMap() }
21-
t[pre] = t.getOrDefault(pre, 0L) + 1L
22-
if (i > 0 && capacity[i] == 0 && capacity[i - 1] == 0) {
23-
res--
24-
}
27+
index++
2528
}
26-
return res
29+
return ans
2730
}
2831
}
Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,28 @@
11
package g3701_3800.s3729_count_distinct_subarrays_divisible_by_k_in_sorted_array
22

3-
// #Hard #Weekly_Contest_473 #2025_10_28_Time_76_ms_(100.00%)_Space_80.47_MB_(100.00%)
3+
// #Hard #Array #Hash_Table #Prefix_Sum #Weekly_Contest_473
4+
// #2025_10_29_Time_61_ms_(100.00%)_Space_80.76_MB_(100.00%)
45

56
class Solution {
67
fun numGoodSubarrays(nums: IntArray, k: Int): Long {
7-
val cnt: MutableMap<Int, Long> = HashMap()
8-
cnt[0] = 1L
9-
var pre = 0
10-
val n = nums.size
11-
var res: Long = 0
12-
for (a in nums) {
13-
pre = (pre + a) % k
14-
res += cnt.getOrDefault(pre, 0L)
15-
cnt[pre] = cnt.getOrDefault(pre, 0L) + 1L
16-
}
17-
var i = 0
18-
while (i < n) {
19-
var j = i
20-
while (j < n && nums[j] == nums[i]) {
21-
++j
22-
}
23-
val l = j - i
24-
for (ll in 1..<l) {
25-
if (ll.toLong() * nums[i] % k == 0L) {
26-
res -= (l - ll).toLong()
8+
val cnt: MutableMap<Int, Int> = HashMap(nums.size, 1f)
9+
cnt[0] = 1
10+
var sum: Long = 0
11+
var lastStart = 0
12+
var ans: Long = 0
13+
for (i in nums.indices) {
14+
val x = nums[i]
15+
if (i > 0 && x != nums[i - 1]) {
16+
var s = sum
17+
for (t in i - lastStart downTo 1) {
18+
cnt.merge((s % k).toInt(), 1) { a: Int?, b: Int? -> Integer.sum(a!!, b!!) }
19+
s -= nums[i - 1].toLong()
2720
}
21+
lastStart = i
2822
}
29-
i = j
23+
sum += x.toLong()
24+
ans += cnt.getOrDefault((sum % k).toInt(), 0).toLong()
3025
}
31-
return res
26+
return ans
3227
}
3328
}

0 commit comments

Comments
 (0)