leetcode 794. Valid Tic-Tac-Toe State | 794. 有效的井字游戏(Java)

x33g5p2x  于2021-12-21 转载在 Java  
字(1.5k)|赞(0)|评价(0)|浏览(260)

题目

https://leetcode.com/problems/valid-tic-tac-toe-state/

题解

1、X必须比O多1个或者相同,否则false
2、X和O不能同时都是赢家,否则false
3、X赢的时候必须比O多1个,否则false
4、O赢得时候个数与X相同,否则false;

其他的都是true

class Solution {
    public boolean validTicTacToe(String[] board) {
        int x = 0; // x count
        int o = 0; // o count
        char[][] b = new char[3][3];
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                char c = board[i].charAt(j);
                if (c == 'X') x++;
                else if (c == 'O') o++;
                b[i][j] = c;
            }
        }
        if (o > x || x - o >= 2) return false;

        int xWin = 0;
        int oWin = 0;
        
        if (b[0][0] != ' ' && b[0][0] == b[0][1] && b[0][1] == b[0][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
        if (b[1][0] != ' ' && b[1][0] == b[1][1] && b[1][1] == b[1][2]) {if (b[1][0] == 'X') xWin++; else oWin++;}
        if (b[2][0] != ' ' && b[2][0] == b[2][1] && b[2][1] == b[2][2]) {if (b[2][0] == 'X') xWin++; else oWin++;}
        
        if (b[0][0] != ' ' && b[0][0] == b[1][0] && b[1][0] == b[2][0]) {if (b[0][0] == 'X') xWin++; else oWin++;}
        if (b[0][1] != ' ' && b[0][1] == b[1][1] && b[1][1] == b[2][1]) {if (b[0][1] == 'X') xWin++; else oWin++;}
        if (b[0][2] != ' ' && b[0][2] == b[1][2] && b[1][2] == b[2][2]) {if (b[0][2] == 'X') xWin++; else oWin++;}
        
        if (b[0][0] != ' ' && b[0][0] == b[1][1] && b[1][1] == b[2][2]) {if (b[0][0] == 'X') xWin++; else oWin++;}
        if (b[0][2] != ' ' && b[0][2] == b[1][1] && b[1][1] == b[2][0]) {if (b[0][2] == 'X') xWin++; else oWin++;}
        
        // 1、X必须比O多1个或者相同,否则false
        // 2、X和O不能同时都是赢家,否则false
        // 3、X赢的时候必须比O多1个,否则false
        // 4、O赢得时候个数与X相同,否则false;
        // 其他的都是true
        if (xWin >= 1 && oWin >= 1) return false;
        if (xWin >= 1) return x == o + 1;
        if (oWin >= 1) return x == o;
        return true;
    }
}

相关文章

最新文章

更多