File tree 1 file changed +48
-0
lines changed
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } grid
3
+ * @return {number }
4
+ */
5
+ const countPyramids = function ( grid ) {
6
+ const rev = clone ( grid )
7
+ let res = count ( grid )
8
+ rev . reverse ( )
9
+ res += count ( rev )
10
+ return res
11
+
12
+ function clone ( grid ) {
13
+ let res = [ ]
14
+ for ( const row of grid ) {
15
+ res . push ( row . slice ( ) )
16
+ }
17
+ return res
18
+ }
19
+ function reverse ( grid ) {
20
+ let l = 0 , r = grid . length - 1
21
+ while ( l < r ) {
22
+ const tmp = grid [ l ]
23
+ grid [ l ] = grid [ r ]
24
+ grid [ r ] = tmp
25
+ l ++
26
+ r --
27
+ }
28
+ }
29
+
30
+ function count ( grid ) {
31
+ const m = grid . length , n = grid [ 0 ] . length
32
+ let res = 0
33
+
34
+ for ( let i = 1 ; i < m ; i ++ ) {
35
+ for ( let j = 1 ; j < n - 1 ; j ++ ) {
36
+ if ( grid [ i ] [ j ] && grid [ i - 1 ] [ j ] ) {
37
+ grid [ i ] [ j ] = Math . min (
38
+ grid [ i - 1 ] [ j - 1 ] ,
39
+ grid [ i - 1 ] [ j + 1 ]
40
+ ) + 1
41
+ res += grid [ i ] [ j ] - 1
42
+ }
43
+ }
44
+ }
45
+
46
+ return res
47
+ }
48
+ } ;
You can’t perform that action at this time.
0 commit comments