https://leetcode.com/problems/design-hashset/
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
직접 해시셋을 만드는 문제다.
대충 해시함수를 만들고
버킷을 만들어서 구현했다.
class MyHashSet:
def __init__(self):
self.capacity = 10000
self.buckets = [[] for _ in range(self.capacity)]
def _hash(self, key) -> int:
return (key * 84293461 + 347281) % self.capacity
def add(self, key: int) -> None:
h = self._hash(key)
if key not in self.buckets[h]:
self.buckets[h].append(key)
def remove(self, key: int) -> None:
h = self._hash(key)
try:
self.buckets[h].remove(key)
except ValueError:
pass
def contains(self, key: int) -> bool:
h = self._hash(key)
return key in self.buckets[h]
시간복잡도는 대충 O(avg(bucket size))일거같긴 한데 해시함수를 그냥 아무 숫자나 적어서 만든거라 얼마나 고르게 분포될진 모르겠다.
'코딩 테스트 및 알고리즘 > leetcode for google' 카테고리의 다른 글
leetcode medium : Best time to buy and sell stock 2 (0) | 2024.02.09 |
---|---|
leetcode medium : Copy List with Random Pointer (0) | 2024.01.20 |
leetcode easy : Lowest Common Ancestor of a Binary Search Tree (0) | 2023.08.18 |
leetcode easy : Happy Number (0) | 2023.03.05 |
leetcode medium : Rotting Oranges (0) | 2023.03.02 |