├── README.md ├── sol1.py └── sol827.py /README.md: -------------------------------------------------------------------------------- 1 | # LeetcodeSolutions -------------------------------------------------------------------------------- /sol1.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | class Solution: 4 | def twoSum(self, nums: List[int], target: int) -> List[int]: 5 | seen = {} 6 | for i, num in enumerate(nums): 7 | complement = target - num 8 | if complement in seen: 9 | return [seen[complement], i] 10 | seen[num] = i 11 | return [] 12 | 13 | def twoSumAllPairs(self, nums: List[int], target: int) -> List[List[int]]: 14 | seen = {} 15 | pairs = [] 16 | for i, num in enumerate(nums): 17 | complement = target - num 18 | if complement in seen: 19 | for j in seen[complement]: 20 | pairs.append([j, i]) 21 | if num in seen: 22 | seen[num].append(i) 23 | else: 24 | seen[num] = [i] 25 | return pairs 26 | -------------------------------------------------------------------------------- /sol827.py: -------------------------------------------------------------------------------- 1 | class Solution: 2 | def fill(self, grid: [], i: int, j: int, number: int) -> int: 3 | if grid[i][j] == 0: 4 | return 0 5 | res = 1 6 | grid[i][j] = number 7 | if i > 0 and grid[i-1][j] == 1: 8 | res += self.fill(grid, i-1, j, number) 9 | if j > 0 and grid[i][j-1] == 1: 10 | res += self.fill(grid, i, j-1, number) 11 | if i + 1 < len(grid) and grid[i+1][j] == 1: 12 | res += self.fill(grid, i+1, j, number) 13 | if j + 1 < len(grid[0]) and grid[i][j+1] == 1: 14 | res += self.fill(grid, i, j+1, number) 15 | 16 | return res 17 | 18 | def largestIsland(self, grid: List[List[int]]) -> int: 19 | s = defaultdict(int) 20 | number = 2 21 | n = len(grid) 22 | m = len(grid[0]) 23 | 24 | for i in range(n): 25 | for j in range(m): 26 | if grid[i][j] == 1: 27 | s[number] = self.fill(grid, i, j, number) 28 | number += 1 29 | 30 | res = 0 31 | for i in range(n): 32 | for j in range(m): 33 | if grid[i][j] != 0: 34 | continue 35 | r = 1 36 | r_s = set() 37 | if i > 0 and grid[i-1][j] != 0: 38 | r += s[grid[i-1][j]] 39 | r_s.add(grid[i-1][j]) 40 | if j > 0 and grid[i][j-1] != 0 and grid[i][j-1] not in r_s: 41 | r += s[grid[i][j-1]] 42 | r_s.add(grid[i][j-1]) 43 | if i + 1 < n and grid[i+1][j] != 0 and grid[i+1][j] not in r_s: 44 | r += s[grid[i+1][j]] 45 | r_s.add(grid[i+1][j]) 46 | if j +1 < m and grid[i][j+1] != 0 and grid[i][j+1] not in r_s: 47 | r += s[grid[i][j+1]] 48 | 49 | res = max(res, r) 50 | 51 | return res if res > 0 else n*m --------------------------------------------------------------------------------