36. Valid Sudoku


💡に答える

var isValidSudoku = function (board) {
  // Set으로 중복을 없애준다.
  let set = new Set();

  for (let i = 0; i < board.length; i++) {
    for (let j = 0; j < board[0].length; j++) {
      let item = board[i][j];
      // .가 아닌 경우만 체크
      if (item !== '.') {
        // String과 index를 통해 unique한 값을 만들어줌
        let num = item;
        let x = item + 'in row' + j; // x축을 탐색하는 변수 x
        let y = item + 'in column' + i; // y축을 탐색하는 변수 y

        // 9개의 박스 중 몇 번째 박스에 있는지(0부터 시작하는 박스) 탐색하는 변수 z
        let z = num + 'in box' + (Math.floor(i / 3) * 3 + Math.floor(j / 3));

        // 중복을 허용하지 않는 set의 특성을 활용한 조건
        if (set.has(x) || set.has(y) || set.has(z)) return false;

        // nested loop을 돌면서 set에 계속 넣어준다.
        set.add(x);
        set.add(y);
        set.add(z);
      }
    }
  }
  return true;
};

📝整理する


この解答は私の解答ではなく、別の学習者の解答を見て、私が理解している部分のコードを移しました.デフォルトでは、Setを使用して重複除外を行います.重複データがある場合は、falsereturnに設定できます.
いつも私たちの学習者たちの解答と説明に感謝しています!
修正、指摘を歓迎します!

質問リンク


https://leetcode.com/problems/valid-sudoku/

LeetCode GitHub


https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/submissions/