Valid Sudoku - Leetcode 36 - Hashmaps & Sets (Python)

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 พ.ย. 2024

ความคิดเห็น •

  • @GregHogg
    @GregHogg  4 หลายเดือนก่อน

    Master Data Structures & Algorithms For FREE at AlgoMap.io!

  • @karthikreddy1110
    @karthikreddy1110 3 หลายเดือนก่อน +10

    if someone doesn't wanna use variable starts, you can modify the for loop like this:
    for row in range(0,9,3):
    for col in range(0,9,3):
    s=set()
    for i in range(3):
    for j in range(3):
    if board[row+i][col+j] in s:
    return False
    elif board[row+i][col+j] != '.':
    s.add(board[row+i][col+j])

  • @nguyenkhiem2318
    @nguyenkhiem2318 6 หลายเดือนก่อน +7

    Thanks Greg, you really have a natural talent for teaching. Was struggling with this one

  • @egg5687
    @egg5687 หลายเดือนก่อน +1

    I usually solve the problem and then compare to your solution and for the case of the medium difficulty problems, my solution is often somewhat more convoluted than yours; there's always some detail that I miss that makes my solution significantly more complicated. But for once, I am still pretty happy with my solution even after seeing yours! So I felt compelled to share it:
    class Solution(object):
    def isValidSudoku(self, board):
    """
    :type board: List[List[str]]
    :rtype: bool
    """
    sudoku_dict = {}
    # The format of this dictionary will be number: [{rows},{cols},{box}]
    for i in range(9):
    for j in range(9):
    val = board[i][j]
    if val == ".":
    continue
    box_num = 3 * (i // 3) + (j // 3)
    if val not in sudoku_dict:
    sudoku_dict[val] = [{i}, {j}, {box_num}]
    elif (i in sudoku_dict[val][0]) or (j in sudoku_dict[val][1]) or (box_num in sudoku_dict[val][2]):
    return False
    else:
    sudoku_dict[val][0].add(i)
    sudoku_dict[val][1].add(j)
    sudoku_dict[val][2].add(box_num)
    return True

  • @punnettsquares
    @punnettsquares 2 หลายเดือนก่อน +7

    Took me 3 years to understand this question

  • @JSH1994
    @JSH1994 2 หลายเดือนก่อน

    your explanations are so clear and intuitive, thank you!

  • @alek002
    @alek002 หลายเดือนก่อน +1

    Thanks!

  • @mercytum7045
    @mercytum7045 8 หลายเดือนก่อน +2

    Thanks, Greg. This was really helpful!

    • @GregHogg
      @GregHogg  8 หลายเดือนก่อน

      Glad it was helpful!

  • @therockriders2759
    @therockriders2759 5 วันที่ผ่านมา

    Super solution

  • @nathanaelcheramlak9332
    @nathanaelcheramlak9332 8 หลายเดือนก่อน +2

    Helpful content, Keep going

    • @GregHogg
      @GregHogg  8 หลายเดือนก่อน

      Thanks a ton 😊

  • @user-jm6gp2qc8x
    @user-jm6gp2qc8x 2 หลายเดือนก่อน

    greg anna vera level

  • @anshpradhan1954
    @anshpradhan1954 3 หลายเดือนก่อน +3

    "Easily the hardest part" lol

  • @krishkchavakrishnakarthik4162
    @krishkchavakrishnakarthik4162 3 หลายเดือนก่อน +1

    super anna

  • @midhunskani
    @midhunskani หลายเดือนก่อน

    Neat solution

  • @HussainAli-hn2ef
    @HussainAli-hn2ef 6 หลายเดือนก่อน +1

    very helpful, thanks!

    • @GregHogg
      @GregHogg  6 หลายเดือนก่อน

      Glad to hear it!!

  • @arsheyajain7055
    @arsheyajain7055 9 หลายเดือนก่อน

    Super helpful!!!!!

    • @GregHogg
      @GregHogg  9 หลายเดือนก่อน +1

      Awesome 😎😎

  • @saedf0
    @saedf0 6 หลายเดือนก่อน +1

    Hey Greg, thanks for the content. Great solution, although i do wonder, how is it BIG O(1) when we have multiple loops? I'm not the best with the complexity identification.

    • @GregHogg
      @GregHogg  6 หลายเดือนก่อน +4

      Thank you! And that's a great question (at any level). Technically, these loops are going to run a constant amount of times (not dependent on the size of the grid) because WE KNOW the grid will be a 9*9. To scan the grid, it takes exactly 81 positions. Not dependent on some N or something. So O(81) is just O(1) in big o talk. I hope this helps!

    • @saedf0
      @saedf0 6 หลายเดือนก่อน +1

      @@GregHogg ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh /*click moment*/
      Man, I cant rely on explanations all the time, do you have any resources/ or easy tricks to remember this stuff.
      I've tried a few videos and identifying it kindve goes over my head
      I get that N^2 (for everytime we do this, run these steps)
      I also understand O(N), Do this
      Log N (Half each time, divide and conquer
      but when the code gets a little longer, kindve difficult to track
      but yh thanks for getting back :)

  • @lakku153
    @lakku153 3 หลายเดือนก่อน

    very nice

  • @kidyoshi007
    @kidyoshi007 3 หลายเดือนก่อน

    Why are you not "s.clear()" clearing the set after each check for row, col, and box??

    • @michaelleeser-smith9342
      @michaelleeser-smith9342 3 หลายเดือนก่อน +1

      S is being reinitialized at each step. It's not global so it doesn't need to be cleared