File tree Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Expand file tree Collapse file tree 1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change 1+ //  O(n * m) time and O(n * m) space
2+ class  Solution  {
3+     fun  imageSmoother (img :  Array <IntArray >): Array <IntArray > {
4+         val  n =  img.size
5+         val  m =  img[0 ].size
6+         val  dirs =  arrayOf(
7+             intArrayOf(0 , 1 ),
8+             intArrayOf(0 , - 1 ),
9+             intArrayOf(1 , 0 ),
10+             intArrayOf(- 1 , 0 ),
11+             intArrayOf(- 1 , - 1 ),
12+             intArrayOf(1 , 1 ),
13+             intArrayOf(- 1 , 1 ),
14+             intArrayOf(1 , - 1 )
15+         )
16+ 
17+         val  res =  Array  (n) { IntArray  (m) }
18+         for  (i in  0  until n) {
19+             for  (j in  0  until m) {
20+                 var  count =  1 
21+                 var  sum =  img[i][j]
22+                 for  (dir in  dirs) {
23+                     val  i2 =  i +  dir[0 ]
24+                     val  j2 =  j +  dir[1 ]
25+                     if  (i2 in  (0  until n) &&  j2 in  (0  until m)) {
26+                         count++ 
27+                         sum + =  img[i2][j2]
28+                     }
29+                 }
30+                 res[i][j] =  sum /  count
31+             }
32+         }
33+ 
34+         return  res
35+     }
36+ }
37+ 
38+ //  O(n * m) time and O(1) space
39+ class  Solution  {
40+     fun  imageSmoother (img :  Array <IntArray >): Array <IntArray > {
41+         val  n =  img.size
42+         val  m =  img[0 ].size
43+         val  dirs =  arrayOf(
44+             intArrayOf(0 , 1 ),
45+             intArrayOf(0 , - 1 ),
46+             intArrayOf(1 , 0 ),
47+             intArrayOf(- 1 , 0 ),
48+             intArrayOf(- 1 , - 1 ),
49+             intArrayOf(1 , 1 ),
50+             intArrayOf(- 1 , 1 ),
51+             intArrayOf(1 , - 1 )
52+         )
53+ 
54+         for  (i in  0  until n) {
55+             for  (j in  0  until m) {
56+                 var  count =  1 
57+                 var  sum =  img[i][j]
58+                 for  (dir in  dirs) {
59+                     val  i2 =  i +  dir[0 ]
60+                     val  j2 =  j +  dir[1 ]
61+                     if  (i2 in  (0  until n) &&  j2 in  (0  until m)) {
62+                         count++ 
63+                         sum + =  img[i2][j2] and  0xFF 
64+                     }
65+                 }
66+                 img[i][j] =  img[i][j] or  ((sum /  count) shl 8 )
67+             }
68+         }
69+ 
70+         for  (i in  0  until n) {
71+             for  (j in  0  until m) {
72+                 img[i][j] =  img[i][j] shr 8 
73+             }
74+         }
75+ 
76+         return  img
77+     }
78+ }
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments