diff --git a/typescript/0303-range-sum-query-immutable.ts b/typescript/0303-range-sum-query-immutable.ts index e2d9c2efd..757a620a6 100644 --- a/typescript/0303-range-sum-query-immutable.ts +++ b/typescript/0303-range-sum-query-immutable.ts @@ -1,5 +1,5 @@ class NumArray { - + prefixSums: number[] = []; constructor(nums: number[]) { diff --git a/typescript/0705-design-hashset.ts b/typescript/0705-design-hashset.ts new file mode 100644 index 000000000..b1f3816cc --- /dev/null +++ b/typescript/0705-design-hashset.ts @@ -0,0 +1,65 @@ +class _ListNode { // ListNode has a confict + key: number; + next: _ListNode | undefined; + + constructor(key: number) { + this.key = key; + } +} + +class MyHashSet { + readonly ARRAY_LENGTH = Math.pow(10, 4); + set = new Array<_ListNode>(this.ARRAY_LENGTH); + + constructor() { + for (let i = 0; i < this.ARRAY_LENGTH; i++) + this.set[i] = new _ListNode(0); + } + + add(key: number): void { + let cur = this.set[key % this.set.length]; + + while (cur.next) { + if (cur.next.key === key) + return; + + cur = cur.next; + } + + cur.next = new _ListNode(key); + } + + remove(key: number): void { + let cur = this.set[key % this.set.length]; + + while (cur.next) { + if (cur.next.key === key) { + cur.next = cur.next.next; + return; + } + + cur = cur.next; + } + } + + contains(key: number): boolean { + let cur = this.set[key % this.set.length]; + + while (cur.next) { + if (cur.next.key === key) + return true; + + cur = cur.next; + } + + return false; + } +} + +/** + * Your MyHashSet object will be instantiated and called as such: + * var obj = new MyHashSet() + * obj.add(key) + * obj.remove(key) + * var param_3 = obj.contains(key) + */