반응형
https://leetcode.com/problems/design-hashset/
비트 연산을 이용하여 풀었습니다.
수의 범위는 0이상 1000000이하 이므로, 1000001개의 수를 표시할 수 있어야합니다.
32비트 정수 하나에는 32개의 수가 나타났음을 표시할 수 있습니다.
따라서, 31251개의 정수 배열로 HashSet을 구현할 수 있었습니다.
class MyHashSet {
public:
int val[31251] = { 0 };
MyHashSet() { }
void add(int key) {;
val[key / 32] |= 1 << (key % 32);
}
void remove(int key) {
val[key / 32] &= ~(1 << key % 32);
}
bool contains(int key) {
return val[key / 32] & (1 << key % 32);
}
};
고정된 범위를 가지고 있고 수의 분포가 고르다(위 문제에서 이건 모르지만)면, 위 방법이 크게 문제는 없을 것입니다.
그렇지 않다면, 다른 방법을 고민해봐야할 것입니다.
반응형
'Algorithm' 카테고리의 다른 글
LeetCode 1396 : Design Underground System (0) | 2022.04.24 |
---|---|
LeetCode 535 : Encode and Decode TinyURL (0) | 2022.04.23 |
LeetCode 173 : Binary Search Tree Iterator (0) | 2022.04.20 |
LeetCode 230 : Kth Smallest Element in a BST (0) | 2022.04.18 |
LeetCode 897 : Increasing Order Search Tree (0) | 2022.04.17 |