File tree Expand file tree Collapse file tree 7 files changed +53
-28
lines changed
src/main/kotlin/g3501_3600
s3556_sum_of_largest_prime_substrings
s3558_number_of_ways_to_assign_edge_weights_i
s3559_number_of_ways_to_assign_edge_weights_ii
s3560_find_minimum_log_transportation_cost
s3561_resulting_string_after_adjacent_removals
s3562_maximum_profit_from_trading_stocks_with_discounts
s3563_lexicographically_smallest_string_after_adjacent_removals Expand file tree Collapse file tree 7 files changed +53
-28
lines changed Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3556_sum_of_largest_prime_substrings
2
2
3
- // #Medium #2025_05_25_Time_25_ms_(100.00%)_Space_43.67_MB_(100.00%)
3
+ // #Medium #String #Hash_Table #Math #Sorting #Number_Theory
4
+ // #2025_05_25_Time_25_ms_(100.00%)_Space_43.67_MB_(100.00%)
4
5
5
6
class Solution {
6
7
fun sumOfLargestPrimes (s : String ): Long {
7
- val primeSet : MutableSet <Long > = HashSet < Long > ()
8
+ val set : MutableSet <Long > = HashSet ()
8
9
val n = s.length
10
+ var first: Long = - 1
11
+ var second: Long = - 1
12
+ var third: Long = - 1
9
13
for (i in 0 .. < n) {
10
- var temp : Long = 0
14
+ var num : Long = 0
11
15
for (j in i.. < n) {
12
- temp = temp * 10 + (s[j].code - ' 0' .code)
13
- if (isPrime(temp)) {
14
- primeSet.add(temp)
16
+ num = num * 10 + (s[j].code - ' 0' .code)
17
+ if (i != j && s[i] == ' 0' ) {
18
+ break
19
+ }
20
+ if (isPrime(num) && ! set.contains(num)) {
21
+ set.add(num)
22
+ if (num > first) {
23
+ third = second
24
+ second = first
25
+ first = num
26
+ } else if (num > second) {
27
+ third = second
28
+ second = num
29
+ } else if (num > third) {
30
+ third = num
31
+ }
15
32
}
16
33
}
17
34
}
18
- val primes : MutableList < Long > = ArrayList < Long >(primeSet)
19
- primes.sort()
20
- val m = primes.size
21
- if (m < 3 ) {
22
- var sum : Long = 0
23
- for (p in primes) {
24
- sum + = p
25
- }
26
- return sum
35
+ var sum : Long = 0
36
+ if (first != - 1L ) {
37
+ sum + = first
38
+ }
39
+ if (second != - 1L ) {
40
+ sum + = second
41
+ }
42
+ if (third != - 1L ) {
43
+ sum + = third
27
44
}
28
- return primes[m - 1 ] + primes[m - 2 ] + primes[m - 3 ]
45
+ return sum
29
46
}
30
47
31
- private fun isPrime (n : Long ): Boolean {
32
- if (n < 2 ) {
48
+ fun isPrime (num : Long ): Boolean {
49
+ if (num <= 1 ) {
50
+ return false
51
+ }
52
+ if (num == 2L || num == 3L ) {
53
+ return true
54
+ }
55
+ if (num % 2 == 0L || num % 3 == 0L ) {
33
56
return false
34
57
}
35
- var i: Long = 2
36
- while (i * i <= n ) {
37
- if (n % i == 0L ) {
58
+ var i: Long = 5
59
+ while (i * i <= num ) {
60
+ if (num % i == 0L || num % (i + 2 ) == 0L ) {
38
61
return false
39
62
}
40
- ++ i
63
+ i + = 6
41
64
}
42
65
return true
43
66
}
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3558_number_of_ways_to_assign_edge_weights_i
2
2
3
- // #Medium #2025_05_25_Time_160_ms_ (100.00%)_Space_149.66_MB_(100.00 %)
3
+ // #Medium #Math #Depth_First_Search #Tree #2025_05_27_Time_21_ms_ (100.00%)_Space_135.14_MB_(45.45 %)
4
4
5
5
class Solution {
6
6
fun assignEdgeWeights (edges : Array <IntArray >): Int {
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3559_number_of_ways_to_assign_edge_weights_ii
2
2
3
- // #Hard #2025_05_25_Time_197_ms_(100.00%)_Space_158.27_MB_(100.00%)
3
+ // #Hard #Array #Dynamic_Programming #Math #Depth_First_Search #Tree
4
+ // #2025_05_25_Time_197_ms_(100.00%)_Space_158.27_MB_(100.00%)
4
5
5
6
import kotlin.math.ceil
6
7
import kotlin.math.ln
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3560_find_minimum_log_transportation_cost
2
2
3
- // #Easy #2025_05_25_Time_0_ms_(100.00%)_Space_40.46_MB_(100.00%)
3
+ // #Easy #Math # 2025_05_25_Time_0_ms_(100.00%)_Space_40.46_MB_(100.00%)
4
4
5
5
class Solution {
6
6
fun minCuttingCost (n : Int , m : Int , k : Int ): Long {
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3561_resulting_string_after_adjacent_removals
2
2
3
- // #Medium #2025_05_25_Time_43_ms_(100.00%)_Space_50.83_MB_(68.75%)
3
+ // #Medium #String #Stack #Simulation # 2025_05_25_Time_43_ms_(100.00%)_Space_50.83_MB_(68.75%)
4
4
5
5
class Solution {
6
6
fun resultingString (s : String ): String {
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3562_maximum_profit_from_trading_stocks_with_discounts
2
2
3
- // #Hard #2025_05_25_Time_40_ms_(100.00%)_Space_49.77_MB_(100.00%)
3
+ // #Hard #Array #Dynamic_Programming #Depth_First_Search #Tree
4
+ // #2025_05_25_Time_40_ms_(100.00%)_Space_49.77_MB_(100.00%)
4
5
5
6
import kotlin.math.max
6
7
Original file line number Diff line number Diff line change 1
1
package g3501_3600.s3563_lexicographically_smallest_string_after_adjacent_removals
2
2
3
- // #Hard #2025_05_25_Time_186_ms_(100.00%)_Space_49.04_MB_(100.00%)
3
+ // #Hard #String #Dynamic_Programming # 2025_05_25_Time_186_ms_(100.00%)_Space_49.04_MB_(100.00%)
4
4
5
5
import kotlin.math.abs
6
6
You can’t perform that action at this time.
0 commit comments