1.
给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。
测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true
import java.util.*;
public class Board {
public boolean checkWon(int[][] board) {
int len = board.length;
int sum = 0;
int i = 0;
int j = 0;
//检查行的和是否为len
for(i =0; i < len;i++){
for(j = 0;j < len;j++){
sum += board[i][j];
}
if(sum == len){
return true;
}
}
//检查列的和是否为len
for(i =0;i < len;i++){
sum = 0;
for(j = 0;j < len;j++){
sum += board[j][i];
}
if(sum == len){
return true;
}
}
//检查主对角线的和是否为len
sum = 0;
for(i = 0; i < len;i++ ){
sum += board[i][i];
}
if(sum == len){
return true;
}
//检查列对角线的和是否为len
sum =0;
for( i = 0;i < len;i++){
sum += board[i][len-i-1];//这里是因为i+j+1=len,所以j=len-i-1
}
if(sum == len){
return true;
}
return false;
}
}