diff --git a/README.md b/README.md index 9c185a07fe..5c624c4386 100644 --- a/README.md +++ b/README.md @@ -999,7 +999,7 @@ _If you like this project, please leave me a star._ ★ |39|[Combination Sum](https://leetcode.com/problems/combination-sum/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_39.java)||Medium|Backtracking |38|[Count and Say](https://leetcode.com/problems/count-and-say/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_38.java)||Easy| Recursion, LinkedList |37|[Sudoku Solver](https://leetcode.com/problems/sudoku-solver/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_37.java)||Hard| -|36|[Valid Sudoku](https://leetcode.com/problems/valid-sudoku/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_36.java)||Medium| +|36|[Valid Sudoku](https://leetcode.com/problems/valid-sudoku/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_36.java), [Javascript](./src/javascript/_36.js)||Medium| |35|[Search Insert Position](https://leetcode.com/problems/search-insert-position/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_35.java)||Easy|Array |34|[Search for a Range](https://leetcode.com/problems/search-for-a-range/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_34.java)||Medium|Array, Binary Search |33|[Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_33.java)||Medium|Binary Search diff --git a/javascript/_36.js b/javascript/_36.js new file mode 100644 index 0000000000..f3bafd88f8 --- /dev/null +++ b/javascript/_36.js @@ -0,0 +1,30 @@ +// Author: Phuong Lam + +/** + * @param {character[][]} board + * @return {boolean} + */ +var isValidSudoku = function (board) { + var valid = [[], [], []] + for (var i = 0; i < 9; i++) { + valid[0][i] = [] + for (var j = 0; j < 9; j++) { + if (board[i][j] !== '.') { + const val = board[i][j] + const pos = Math.floor(i / 3) * 3 + Math.floor(j / 3) + + if (!valid[1][j]) valid['1'][j] = [] + if (!valid[2][pos]) valid['2'][pos] = [] + + if (valid[0][i][val]) return false + if (valid[1][j][val]) return false + if (valid[2][pos][val]) return false + + valid[0][i][val] = 1 + valid[1][j][val] = 1 + valid[2][pos][val] = 1 + } + } + } + return true +}