Java faster than 100%, one pass
\nclass Solution {\n    private int[] playerX = new int[8]; // eight ways to win the game\n    private int[] playerO = new int[8];\n    private int countX, coun
```\nclass Solution {\n    private int[] playerX = new int[8]; // eight ways to win the game\n    private int[] playerO = new int[8];\n    private int countX, countO;\n    public boolean validTicTacToe(String[] board) {\n        for(int i = 0; i < 3; i++){\n            for(int j = 0; j < 3; j++){\n                char c = board[i].charAt(j);\n                if (c == \'X\') {\n                    playerX[i]++;\n                    playerX[j + 3]++;\n                    if (i == j) playerX[6]++;\n                    if (i == 2 - j) playerX[7]++;\n                    countX++;\n                }\n                if (c == \'O\') {\n                    playerO[i]++;\n                    playerO[j + 3]++;\n                    if (i == j) playerO[6]++;\n                    if (i == 2 - j) playerO[7]++;\n                    countO++;\n                }\n            }\n        }\n        return boardValidation();\n    }\n\n    private boolean boardValidation() {\n\t\tif (countX > countO + 1 || countX < countO) return false;\n        boolean winnerX = false;\n        boolean winnerO = false;\n        for (int i = 0; i < 8; i++) {\n            if (playerX[i] == 3) {\n                winnerX = true;\n            }\n            if (playerO[i] == 3) {\n                winnerO = true;\n            }\n        }\n        if (winnerX && winnerO) return false;\n        else if (winnerX) return countX == countO + 1;\n        else if (winnerO) return countX == countO;\n        else return true;\n\t}\n}\n```
[]