File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。
3
+ 一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格,
4
+ 也不能进入行坐标和列坐标的数位之和大于k的格子。
5
+
6
+ 例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。
7
+ 但它不能进入方格 [35, 38],因为3+5+3+8=19。
8
+ 请问该机器人能够到达多少个格子?
9
+ **/
10
+
11
+ /**
12
+ * @param {number } m
13
+ * @param {number } n
14
+ * @param {number } k
15
+ * @return {number }
16
+ */
17
+ var movingCount = function ( m , n , k ) {
18
+ let total = 0
19
+ let obj = { }
20
+ function runing ( i , j ) {
21
+ //边界直接返回
22
+ if ( i < 0 || j < 0 || i >= m || j >= n ) return
23
+ let sum = ( i + '' + j ) . split ( '' ) . reduce ( ( a , b ) => + a + + b )
24
+ let pos = JSON . stringify ( [ i , j ] )
25
+ if ( ! obj [ pos ] && sum <= k ) {
26
+ // 当该点还没走过 且 不大于k 时 继续执行
27
+ total ++
28
+ obj [ pos ] = true // 标识该点已经走过, 下次不进
29
+ // 当前的继续 上下左右 走
30
+ runing ( i + 1 , j )
31
+ runing ( i , j + 1 )
32
+ runing ( i - 1 , j )
33
+ runing ( i , j - 1 )
34
+ }
35
+ }
36
+ runing ( 0 , 0 )
37
+ return total
38
+ }
You can’t perform that action at this time.
0 commit comments