Skip to content

Commit 5ab98b0

Browse files
authored
Improved arrays
1 parent 61d417c commit 5ab98b0

File tree

23 files changed

+48
-91
lines changed
  • src/main/kotlin
    • g1501_1600/s1594_maximum_non_negative_product_in_a_matrix
    • g1801_1900/s1886_determine_whether_matrix_can_be_obtained_by_rotation
    • g1901_2000
      • s1942_the_number_of_the_smallest_unoccupied_chair
      • s1985_find_the_kth_largest_integer_in_the_array
      • s1996_the_number_of_weak_characters_in_the_game
    • g2001_2100
    • g2101_2200/s2136_earliest_possible_day_of_full_bloom
    • g2201_2300
      • s2250_count_number_of_rectangles_containing_each_point
      • s2251_number_of_flowers_in_full_bloom
      • s2271_maximum_white_tiles_covered_by_a_carpet
      • s2280_minimum_lines_to_represent_a_line_chart
    • g2401_2500
    • g2501_2600
    • g2701_2800
    • g3001_3100/s3068_find_the_maximum_sum_of_node_values

23 files changed

+48
-91
lines changed

src/main/kotlin/g1501_1600/s1594_maximum_non_negative_product_in_a_matrix/Solution.kt

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,38 @@ package g1501_1600.s1594_maximum_non_negative_product_in_a_matrix
66
class Solution {
77
private class Tuple(var max: Long, var min: Long)
88

9-
fun maxProductPath(grid: Array<IntArray?>?): Int {
9+
fun maxProductPath(grid: Array<IntArray>): Int {
1010
// DP
11-
if (grid == null || grid.size == 0 || grid[0] == null || grid[0]!!.size == 0) {
11+
if (grid.isEmpty() || grid[0].isEmpty()) {
1212
return 0
1313
}
1414
val rows = grid.size
15-
val cols = grid[0]!!.size
16-
val dp = Array(rows) { arrayOfNulls<Tuple>(cols) }
17-
for (i in 0 until rows) {
18-
for (j in 0 until cols) {
19-
dp[i][j] = Tuple(1, 1)
20-
}
21-
}
15+
val cols = grid[0].size
16+
val dp = Array(rows) { Array(cols) { Tuple(1, 1) } }
2217
// Init first row and column
23-
dp[0][0]!!.max = grid[0]!![0].toLong()
24-
dp[0][0]!!.min = grid[0]!![0].toLong()
18+
dp[0][0].max = grid[0][0].toLong()
19+
dp[0][0].min = grid[0][0].toLong()
2520
for (i in 1 until rows) {
26-
dp[i][0]!!.max = grid[i]!![0] * dp[i - 1][0]!!.max
27-
dp[i][0]!!.min = grid[i]!![0] * dp[i - 1][0]!!.min
21+
dp[i][0].max = grid[i][0] * dp[i - 1][0].max
22+
dp[i][0].min = grid[i][0] * dp[i - 1][0].min
2823
}
2924
for (i in 1 until cols) {
30-
dp[0][i]!!.max = grid[0]!![i] * dp[0][i - 1]!!.max
31-
dp[0][i]!!.min = grid[0]!![i] * dp[0][i - 1]!!.min
25+
dp[0][i].max = grid[0][i] * dp[0][i - 1].max
26+
dp[0][i].min = grid[0][i] * dp[0][i - 1].min
3227
}
3328
// DP
3429
for (i in 1 until rows) {
3530
for (j in 1 until cols) {
36-
val up1 = dp[i - 1][j]!!.max * grid[i]!![j]
37-
val up2 = dp[i - 1][j]!!.min * grid[i]!![j]
38-
val left1 = dp[i][j - 1]!!.max * grid[i]!![j]
39-
val left2 = dp[i][j - 1]!!.min * grid[i]!![j]
40-
dp[i][j]!!.max = Math.max(up1, Math.max(up2, Math.max(left1, left2)))
41-
dp[i][j]!!.min = Math.min(up1, Math.min(up2, Math.min(left1, left2)))
31+
val up1 = dp[i - 1][j].max * grid[i][j]
32+
val up2 = dp[i - 1][j].min * grid[i][j]
33+
val left1 = dp[i][j - 1].max * grid[i][j]
34+
val left2 = dp[i][j - 1].min * grid[i][j]
35+
dp[i][j].max = Math.max(up1, Math.max(up2, Math.max(left1, left2)))
36+
dp[i][j].min = Math.min(up1, Math.min(up2, Math.min(left1, left2)))
4237
}
4338
}
44-
return if (dp[rows - 1][cols - 1]!!.max < 0) {
39+
return if (dp[rows - 1][cols - 1].max < 0) {
4540
-1
46-
} else (dp[rows - 1][cols - 1]!!.max % (1e9 + 7)).toInt()
41+
} else (dp[rows - 1][cols - 1].max % (1e9 + 7)).toInt()
4742
}
4843
}

src/main/kotlin/g1801_1900/s1886_determine_whether_matrix_can_be_obtained_by_rotation/Solution.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ package g1801_1900.s1886_determine_whether_matrix_can_be_obtained_by_rotation
33
// #Easy #Array #Matrix #Programming_Skills_II_Day_7
44
// #2023_06_22_Time_147_ms_(85.71%)_Space_34.1_MB_(100.00%)
55

6-
import java.util.Arrays
7-
86
class Solution {
9-
fun findRotation(mat: Array<IntArray>, target: Array<IntArray?>?): Boolean {
7+
fun findRotation(mat: Array<IntArray>, target: Array<IntArray>): Boolean {
108
for (i in 0..3) {
11-
if (Arrays.deepEquals(mat, target)) {
9+
if (mat.contentDeepEquals(target)) {
1210
return true
1311
}
1412
rotate(mat)

src/main/kotlin/g1901_2000/s1942_the_number_of_the_smallest_unoccupied_chair/Solution.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package g1901_2000.s1942_the_number_of_the_smallest_unoccupied_chair
33
// #Medium #Array #Heap_Priority_Queue #Ordered_Set
44
// #2023_06_20_Time_549_ms_(100.00%)_Space_63.6_MB_(100.00%)
55

6-
import java.util.Arrays
76
import java.util.PriorityQueue
87

98
class Solution {
@@ -15,9 +14,8 @@ class Solution {
1514
all[2 * i] = Person(i, times[i][0], false, true)
1615
all[2 * i + 1] = Person(i, times[i][1], true, false)
1716
}
18-
Arrays.sort(
19-
all
20-
) { a: Person?, b: Person? ->
17+
18+
all.sortWith { a: Person?, b: Person? ->
2119
val i = if (a!!.leave) -1 else 1
2220
val j = if (b!!.leave) -1 else 1
2321
if (a.time == b.time) i - j else a.time - b.time

src/main/kotlin/g1901_2000/s1985_find_the_kth_largest_integer_in_the_array/Solution.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ package g1901_2000.s1985_find_the_kth_largest_integer_in_the_array
33
// #Medium #Array #String #Sorting #Heap_Priority_Queue #Divide_and_Conquer #Quickselect
44
// #2023_06_21_Time_397_ms_(100.00%)_Space_55.3_MB_(66.67%)
55

6-
import java.util.Arrays
7-
86
class Solution {
97
fun kthLargestNumber(nums: Array<String>, k: Int): String {
10-
Arrays.sort(nums) { n1: String, n2: String -> compareStringInt(n2, n1) }
8+
nums.sortWith { n1: String, n2: String -> compareStringInt(n2, n1) }
119
return nums[k - 1]
1210
}
1311

1412
private fun compareStringInt(n1: String, n2: String): Int {
1513
if (n1.length != n2.length) {
1614
return if (n1.length < n2.length) -1 else 1
1715
}
18-
for (i in 0 until n1.length) {
16+
for (i in n1.indices) {
1917
val n1Digit = n1[i].code - '0'.code
2018
val n2Digit = n2[i].code - '0'.code
2119
if (n1Digit > n2Digit) {

src/main/kotlin/g1901_2000/s1996_the_number_of_weak_characters_in_the_game/Solution.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package g1901_2000.s1996_the_number_of_weak_characters_in_the_game
33
// #Medium #Array #Sorting #Greedy #Stack #Monotonic_Stack
44
// #2023_06_21_Time_1234_ms_(100.00%)_Space_98.2_MB_(100.00%)
55

6-
import java.util.Arrays
7-
86
class Solution {
97
fun numberOfWeakCharacters(properties: Array<IntArray>): Int {
10-
Arrays.sort(properties) { a: IntArray, b: IntArray -> if (a[0] == b[0]) b[1] - a[1] else a[0] - b[0] }
8+
properties.sortWith { a: IntArray, b: IntArray -> if (a[0] == b[0]) b[1] - a[1] else a[0] - b[0] }
119
var max = properties[properties.size - 1][1]
1210
var count = 0
1311
for (i in properties.size - 2 downTo 0) {

src/main/kotlin/g2001_2100/s2008_maximum_earnings_from_taxi/Solution.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@ package g2001_2100.s2008_maximum_earnings_from_taxi
33
// #Medium #Array #Dynamic_Programming #Sorting #Binary_Search
44
// #2023_06_23_Time_1008_ms_(100.00%)_Space_67.3_MB_(100.00%)
55

6-
import java.util.Arrays
76
import java.util.PriorityQueue
87

98
@Suppress("UNUSED_PARAMETER")
109
class Solution {
1110
fun maxTaxiEarnings(n: Int, rides: Array<IntArray>): Long {
1211
// Sort based on start time
13-
Arrays.sort(rides) { a: IntArray, b: IntArray ->
12+
rides.sortWith { a: IntArray, b: IntArray ->
1413
a[0] - b[0]
1514
}
1615
var max: Long = 0

src/main/kotlin/g2001_2100/s2054_two_best_non_overlapping_events/Solution.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package g2001_2100.s2054_two_best_non_overlapping_events
33
// #Medium #Array #Dynamic_Programming #Sorting #Binary_Search #Heap_Priority_Queue
44
// #2023_06_25_Time_851_ms_(100.00%)_Space_108.7_MB_(50.00%)
55

6-
import java.util.Arrays
7-
86
class Solution {
97
fun maxTwoEvents(events: Array<IntArray>): Int {
10-
Arrays.sort(events) { a: IntArray, b: IntArray -> a[0] - b[0] }
8+
events.sortWith { a: IntArray, b: IntArray -> a[0] - b[0] }
119
val max = IntArray(events.size)
1210
for (i in events.indices.reversed()) {
1311
if (i == events.size - 1) {

src/main/kotlin/g2001_2100/s2092_find_all_people_with_secret/Solution.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ package g2001_2100.s2092_find_all_people_with_secret
33
// #Hard #Sorting #Depth_First_Search #Breadth_First_Search #Graph #Union_Find
44
// #2023_06_28_Time_1086_ms_(100.00%)_Space_104.2_MB_(100.00%)
55

6-
import java.util.Arrays
7-
86
@Suppress("NAME_SHADOWING")
97
class Solution {
108
fun findAllPeople(n: Int, meetings: Array<IntArray>, firstPerson: Int): List<Int> {
11-
Arrays.sort(meetings) { a: IntArray, b: IntArray -> a[2] - b[2] }
9+
meetings.sortWith { a: IntArray, b: IntArray -> a[2] - b[2] }
1210
val uf = UF(n)
1311
// base
1412
uf.union(0, firstPerson)

src/main/kotlin/g2101_2200/s2136_earliest_possible_day_of_full_bloom/Solution.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package g2101_2200.s2136_earliest_possible_day_of_full_bloom
22

33
// #Hard #Array #Sorting #Greedy #2023_06_25_Time_968_ms_(100.00%)_Space_57.2_MB_(100.00%)
44

5-
import java.util.Arrays
65
import java.util.Collections
76

87
class Solution {
@@ -15,7 +14,7 @@ class Solution {
1514
for (i in 0 until n) {
1615
arr[i] = Seed(plantTime[i], growTime[i])
1716
}
18-
Arrays.sort(arr, Collections.reverseOrder())
17+
arr.sortWith(Collections.reverseOrder())
1918
var ans = arr[0]!!.plantTime + arr[0]!!.growTime
2019
var lastPlantDay = arr[0]!!.plantTime
2120
for (i in 1 until n) {

src/main/kotlin/g2201_2300/s2250_count_number_of_rectangles_containing_each_point/Solution.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package g2201_2300.s2250_count_number_of_rectangles_containing_each_point
33
// #Medium #Array #Sorting #Binary_Search #Binary_Indexed_Tree
44
// #2023_06_27_Time_967_ms_(100.00%)_Space_85.4_MB_(100.00%)
55

6-
import java.util.Arrays
7-
86
class Solution {
97
fun countRectangles(rectangles: Array<IntArray>, points: Array<IntArray>): IntArray {
108
val n = rectangles.size
@@ -14,7 +12,7 @@ class Solution {
1412
for (i in 0 until q) {
1513
es[n + i] = intArrayOf(points[i][0], points[i][1], i)
1614
}
17-
Arrays.sort(es) { x: IntArray?, y: IntArray? -> if (x!![0] != y!![0]) -(x[0] - y[0]) else x.size - y.size }
15+
es.sortWith { x: IntArray?, y: IntArray? -> if (x!![0] != y!![0]) -(x[0] - y[0]) else x.size - y.size }
1816
val ct = IntArray(101)
1917
val ans = IntArray(q)
2018
for (e in es) {

0 commit comments

Comments
 (0)