Open4
LeetCodeメモ

703
heapq
import heapq
class KthLargest(object):
def __init__(self, k, nums):
self.k = k
self.nums = nums
heapq.heapify(self.nums)
while len(self.nums) > k:
heapq.heappop(self.nums)
def add(self, val):
heapq.heappush(self.nums, val)
if len(self.nums) > self.k:
heapq.heappop(self.nums)
return self.nums[0]

40
バックトラッキング
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
def backtrack(start, target, path):
if target == 0:
result.append(path[:])
return
for i in range(start, len(candidates)):
if i > start and candidates[i] == candidates[i-1]:
continue
if candidates[i] > target:
break
path.append(candidates[i])
backtrack(i + 1, target - candidates[i], path)
path.pop()
candidates.sort() # Sort to handle duplicates and optimize
result = []
backtrack(0, target, [])
return result

290
zip_longest()
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
s = s.split()
return (len(set(pattern)) ==
len(set(s)) ==
len(set(zip_longest(pattern,s))))