长大后想做什么?做回小孩!

0%

LeetCode——车的可用捕获量

NO.999 车的可用捕获量 简单

8zuggg.png

8zu2vQ.png

8zufDs.png

8zuWuj.png

思路一:遍历模拟 没什么好说的,遍历棋盘找R,然后四个方向去捕获p。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public int numRookCaptures(char[][] board) {
int ans=0;
//找R的位置
int[] index=findR(board);
//R四个方向上进行捕获
int i=index[0],j=index[1];
//向下
for (int k = i+1; k < 8; k++) {
if (board[k][j]=='B')break;
if (board[k][j]=='p'){
ans++;
break;
}
}
//向右
for (int k = j+1; k < 8; k++) {
if (board[i][k]=='B')break;
if (board[i][k]=='p'){
ans++;
break;
}
}
//向上
for (int k = i-1; k >= 0; k--) {
if (board[k][j]=='B')break;
if (board[k][j]=='p'){
ans++;
break;
}
}
//向左
for (int k = j; k >=0; k--) {
if (board[i][k]=='B')break;
if (board[i][k]=='p'){
ans++;
break;
}
}
return ans;
}

private int[] findR(char[][] board) {
for (int i=0;i < 8; i++) {
for (int j=0;j<8;j++){
if (board[i][j] == 'R') {
return new int[]{i,j};
}
}
}
return new int[]{8,8};
}

时间复杂度:O(n^2) 最坏情况遍历一次棋盘加两条边,就是n^2+2n。


本人菜鸟,有错误请告知,感激不尽!

更多题解和源码:github