Skip to content

Commit 7fa8820

Browse files
committed
Improved task
1 parent 7640208 commit 7fa8820

File tree

1 file changed

+13
-13
lines changed
  • src/main/kotlin/g3401_3500/s3425_longest_special_path

1 file changed

+13
-13
lines changed

src/main/kotlin/g3401_3500/s3425_longest_special_path/Solution.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,28 @@ package g3401_3500.s3425_longest_special_path
33
// #Hard #2025_01_19_Time_106_(100.00%)_Space_187.68_(100.00%)
44

55
class Solution {
6-
private lateinit var adj: Array<ArrayList<IntArray>?>
6+
private lateinit var adj: Array<ArrayList<IntArray>>
77
private lateinit var nums: IntArray
88
private lateinit var dist: IntArray
99
private lateinit var lastOccur: IntArray
10-
private var pathStack: ArrayList<Int?>? = null
10+
private lateinit var pathStack: ArrayList<Int>
1111
private var minIndex = 0
1212
private var maxLen = 0
1313
private var minNodesForMaxLen = 0
1414

15-
fun longestSpecialPath(edges: Array<IntArray>, nums: IntArray): IntArray? {
15+
fun longestSpecialPath(edges: Array<IntArray>, nums: IntArray): IntArray {
1616
val n = nums.size
1717
this.nums = nums
18-
adj = Array<ArrayList<IntArray>?>(n) { ArrayList<IntArray>() }
18+
adj = Array<ArrayList<IntArray>>(n) { ArrayList<IntArray>() }
1919
for (i in 0..<n) {
2020
adj[i] = ArrayList<IntArray>()
2121
}
2222
for (e in edges) {
2323
val u = e[0]
2424
val v = e[1]
2525
val w = e[2]
26-
adj[u]!!.add(intArrayOf(v, w))
27-
adj[v]!!.add(intArrayOf(u, w))
26+
adj[u].add(intArrayOf(v, w))
27+
adj[v].add(intArrayOf(u, w))
2828
}
2929
dist = IntArray(n)
3030
buildDist(0, -1, 0)
@@ -36,7 +36,7 @@ class Solution {
3636
}
3737
lastOccur = IntArray(maxVal + 1)
3838
lastOccur.fill(-1)
39-
pathStack = ArrayList<Int?>()
39+
pathStack = ArrayList<Int>()
4040
minIndex = 0
4141
maxLen = 0
4242
minNodesForMaxLen = Int.Companion.MAX_VALUE
@@ -46,7 +46,7 @@ class Solution {
4646

4747
private fun buildDist(u: Int, parent: Int, currDist: Int) {
4848
dist[u] = currDist
49-
for (edge in adj[u]!!) {
49+
for (edge in adj[u]) {
5050
val v = edge[0]
5151
val w = edge[1]
5252
if (v == parent) {
@@ -57,8 +57,8 @@ class Solution {
5757
}
5858

5959
private fun dfs(u: Int, parent: Int) {
60-
val stackPos = pathStack!!.size
61-
pathStack!!.add(u)
60+
val stackPos = pathStack.size
61+
pathStack.add(u)
6262
val `val` = nums[u]
6363
val oldPos = lastOccur[`val`]
6464
val oldMinIndex = minIndex
@@ -67,7 +67,7 @@ class Solution {
6767
minIndex = oldPos + 1
6868
}
6969
if (minIndex <= stackPos) {
70-
val ancestor = pathStack!![minIndex]!!
70+
val ancestor = pathStack[minIndex]
7171
val pathLength = dist[u] - dist[ancestor]
7272
val pathNodes = stackPos - minIndex + 1
7373
if (pathLength > maxLen) {
@@ -77,14 +77,14 @@ class Solution {
7777
minNodesForMaxLen = pathNodes
7878
}
7979
}
80-
for (edge in adj[u]!!) {
80+
for (edge in adj[u]) {
8181
val v = edge[0]
8282
if (v == parent) {
8383
continue
8484
}
8585
dfs(v, u)
8686
}
87-
pathStack!!.removeAt(pathStack!!.size - 1)
87+
pathStack.removeAt(pathStack.size - 1)
8888
lastOccur[`val`] = oldPos
8989
minIndex = oldMinIndex
9090
}

0 commit comments

Comments
 (0)