File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change 1+ //  If we can't do inplace, space O(N)
2+ class  Solution  {
3+     fun  uniquePathsWithObstacles (grid :  Array <IntArray >): Int  {
4+ 
5+         val  m =  grid.lastIndex
6+         val  n =  grid[0 ].lastIndex
7+ 
8+         if  (grid[m][n] ==  1  ||  grid[0 ][0 ] ==  1 ) return  0 
9+         
10+         val  dp =  IntArray (n+ 1 )
11+         dp[n] =  1 
12+ 
13+         for  (i in  m downTo 0 ) {
14+             for  (j in  n downTo 0 ) {
15+                 if  (grid[i][j] ==  1 ) dp[j] =  0 
16+                 else  if  (j <  n) dp[j] =  dp[j] +  dp[j +  1 ]
17+                 // else dp[j] = dp[j] + 0
18+             }
19+         }
20+     
21+         return  dp[0 ]
22+     }
23+ }
24+ 
25+ //  In place O(1)
26+ class  Solution  {
27+     fun  uniquePathsWithObstacles (grid :  Array <IntArray >): Int  {
28+ 
29+         val  m =  grid.lastIndex
30+         val  n =  grid[0 ].lastIndex
31+ 
32+         if  (grid[m][n] ==  1  ||  grid[0 ][0 ] ==  1 ) return  0 
33+         
34+         grid[m][n] =  1 
35+ 
36+         for  (i in  m- 1  downTo 0 ) {
37+             grid[i][n] =  if (grid[i][n] ==  0  &&  grid[i +  1 ][n] ==  1 ) 1  else  0 
38+         }
39+ 
40+         for  (i in  n- 1  downTo 0 ) {
41+             grid[m][i] =  if (grid[m][i] ==  0  &&  grid[m][i +  1 ] ==  1 ) 1  else  0 
42+         }
43+ 
44+         for  (i in  m- 1  downTo 0 ) {
45+             for  (j in  n- 1  downTo 0 ) {
46+                 if (grid[i][j] !=  1 ) {
47+                     grid[i][j] =  grid[i +  1 ][j] +  grid[i][j +  1 ]
48+                 } else  {
49+                     grid[i][j] =  0 
50+                 }   
51+             }
52+         }
53+     
54+         return  grid[0 ][0 ]
55+     }
56+ }
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments