MAKING A LARGE ISLAND | LEETCODE # 827 | PYTHON SOLUTION

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ม.ค. 2025

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

  • @thezendawg
    @thezendawg 11 หลายเดือนก่อน +11

    The first example isn't an area of 2 though right b/c 4-directionally doesn't mean diagonal?

  • @jyothi9082
    @jyothi9082 27 วันที่ผ่านมา +1

    I lost my mind doing this problem, but I finally got it, thanks

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

    In the problem statement it says 4-directional, why do you keep counting the diagonals to be a part of the island?

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

      Probably just a mistake on my part. Update the code to use it without it, should be the same

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

    very good explanation. Thank you

  • @mohammadkareem1187
    @mohammadkareem1187 2 ปีที่แล้ว +1

    keep it up bro, great job!

  • @rsKayiira
    @rsKayiira 2 ปีที่แล้ว +1

    Excellent explanation. Only question is in second for loop of both double for loops why use len(grid[m]) when len(grid[0]) also works?

    • @crackfaang
      @crackfaang  2 ปีที่แล้ว +1

      Doesn’t matter, just personal preference. Both are fine

    • @rsKayiira
      @rsKayiira 2 ปีที่แล้ว

      @@crackfaang thank you

  • @syafzal273
    @syafzal273 ปีที่แล้ว

    Very well explained, I made a lot of mistakes while coding this up!

    • @crackfaang
      @crackfaang  ปีที่แล้ว

      Yea it's a tricky one for sure

  • @nikethdonthula2123
    @nikethdonthula2123 ปีที่แล้ว

    Explained very well 🔥🔥

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

    Great walk through, thanks!

  • @strawberriesandcream2863
    @strawberriesandcream2863 ปีที่แล้ว

    great explanation and solution, thanks :)

  • @SatinderSingh71
    @SatinderSingh71 ปีที่แล้ว +1

    Can you post the solution to the code?

  • @AmolGautam
    @AmolGautam ปีที่แล้ว

    Thank you very much , this is quite helpful.

  • @sidazhong2019
    @sidazhong2019 2 วันที่ผ่านมา

    I think your explanations are already on par with NeetCode. However, NeetCode's diagramming tools are more professional. Your advantage is that you cover more topics.

    • @crackfaang
      @crackfaang  วันที่ผ่านมา

      Waiting for the M5 iPad Pro before getting one to do the drawings on in the future. Can't bring myself to buy one now since there is a refresh just around the corner haha

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

    This is my version:
    class Solution:
    def calculate_potential_connection_size(self, i, j,):
    indices_of_starting_cells = set()
    # up
    if i-1 > -1 and self.grid[i-1][j] != 0: # can be switched with checking if it's a tupple
    indices_of_starting_cells.add( self.grid[i-1][j])
    # right
    if j+1 < len(self.grid[i]) and self.grid[i][j+1] != 0: # can be switched with checking if it's a tupple
    indices_of_starting_cells.add( self.grid[i][j+1])
    # down
    if i+1 < len(self.grid) and self.grid[i+1][j] != 0: # can be switched with checking if it's a tupple
    indices_of_starting_cells.add( self.grid[i+1][j])
    # left
    if j-1 > -1 and self.grid[i][j-1] != 0: # can be switched with checking if it's a tupple
    indices_of_starting_cells.add( self.grid[i][j-1])
    return sum( [self.starting_cell_indices_to_island_size[pair] for pair in indices_of_starting_cells] ) + 1 # because of 0 the we would change to a 1

    def get_island_size(self, i, j, start_i, start_j):

    size = 0
    if self.grid[i][j] == 1:
    size += 1
    self.grid[i][j] = (start_i,start_j)
    if i-1 > -1: # up
    size += self.get_island_size(i-1, j, start_i, start_j)
    if j+1 < len(self.grid[i]): # right
    size +=self.get_island_size(i, j+1, start_i, start_j)
    if i+1 < len(self.grid): # down
    size +=self.get_island_size(i+1, j, start_i, start_j)
    if j-1 > -1: # left
    size += self.get_island_size(i, j-1, start_i, start_j)
    else: # self.grid[i][j] must be 0
    self.surrounding_zeroes.add((i,j))
    return size
    def largestIsland(self, grid: List[List[int]]) -> int:
    self.grid = grid
    # print(f"Before : ")
    # self.print_grid()
    self.surrounding_zeroes = set()
    self.starting_cell_indices_to_island_size = dict()
    max_area = 1 # because of 0 the we would change to
    for i in range(len(self.grid)):
    for j in range(len(self.grid[i])):
    if self.grid[i][j] == 1:
    self.starting_cell_indices_to_island_size[i, j] = self.get_island_size(i,j, start_i=i, start_j=j)
    # print(f"{self.starting_cell_indices_to_island_size[i, j] = }")
    max_area = max([max_area, self.starting_cell_indices_to_island_size[i, j]])
    # print(f"After : ")
    # self.print_grid()
    for i, j in self.surrounding_zeroes:
    if self.grid[i][j] == 0:
    # print(f"the 0 at {i}, {j} = {self.calculate_potential_connection_size(i, j)}")
    max_area = max([max_area, self.calculate_potential_connection_size(i, j)])
    return max_area

  • @Ankit-hs9nb
    @Ankit-hs9nb 2 ปีที่แล้ว

    Please cover this one:
    249. Group Shifted Strings
    thanks!:)

    • @crackfaang
      @crackfaang  2 ปีที่แล้ว +1

      Only if you subscribe to the channel 😉

    • @Ankit-hs9nb
      @Ankit-hs9nb 2 ปีที่แล้ว +1

      Already subscribed a month ago and notification bell also turned on!😄