题解 | #井字棋#
井字棋
https://www.nowcoder.com/practice/e1bb714eb9924188a0d5a6df2216a3d1
import java.util.*;
public class Board {
public boolean checkWon(int[][] board) {
// write code here
int n=board.length;//获取二维数组的长度
int sum=0;//统计某1行或某1列的数字和,看等不等于n
//1统计行
for(int i=0;i<n;i++){
sum=0;//先置0,因为上一次sum有数据
for(int j=0;j<n;j++){
sum+=board[i][j]; //统计和 行号不变列号变
}
if(sum==n){ //最后出来(从一行中出来),能对上n,则代表当前行,是一条线
return true;
}
}
//2统计列
for(int i=0;i<n;i++){
sum=0;//先置0,以免有数据残留
for(int j=0;j<n;j++){
sum+=board[j][i];//列号不变,行号变,所以这里行是j
}
if(sum==n){
return true; //有列满足,则为TRUE
}
}
//3,统计主对角线
sum=0;//先在外面清空,不能在for循环里面清空
for(int i=0;i<n;i++){
sum+=board[i][i];//因为下标一样
}
if(sum==n){
return true;//出来后,主对角线满足条件,返回TRUE
}
//统计副对角线
sum=0; //先清0
for(int i=0;i<n;i++){
sum+=board[i][n-1-i];//下标和为n-1
}
if(sum==n){
return true;//副对角线满足
}
return false;//走到这里都不满足,则为FALSE
}
}
