@@ -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
55class  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