天天看點

LeetCode705 設計哈希集合 & 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射

LeetCode705 設計哈希集合 & 706 設計哈希映射

  • LeetCode705 設計哈希集合
    • 題目
    • 解題
  • 706 設計哈希映射
    • 題目
    • 解題

LeetCode705 設計哈希集合

題目

LeetCode705 設計哈希集合 & 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射
LeetCode705 設計哈希集合 & 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射

解題

LeetCode705 設計哈希集合 & 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射
LeetCode705 設計哈希集合 & 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射
// javascript
var MyHashSet = function() {
    this.BASE = 769;
    this.data = new Array(this.BASE).fill(0).map(() => new Array());
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.add = function(key) {
    const h = this.hash(key);
    for (const element of this.data[h]) {
        if (element === key) return;
    }
    this.data[h].push(key);
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashSet.prototype.remove = function(key) {
    const h = this.hash(key);
    for (let i = 0; i < this.data[h].length; ++i) {
        if (this.data[h][i] === key) {
            this.data[h].splice(i, 1);
            return;
        }
    }
};

/** 
 * @param {number} key
 * @return {boolean}
 */
MyHashSet.prototype.contains = function(key) {
    const h = this.hash(key);
    for (const element of this.data[h]) {
        if (element === key) return true;
    }
    return false;
};

MyHashSet.prototype.hash = function(key) {
    return key % this.BASE;
};
           
LeetCode705 設計哈希集合 &amp; 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射

706 設計哈希映射

題目

LeetCode705 設計哈希集合 &amp; 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射
LeetCode705 設計哈希集合 &amp; 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射

解題

和 705 題基本一樣,隻是現在要插入的是鍵值對,是以二維數組裡存儲的是二進制數組。

//
var MyHashMap = function() {
    this.BASE = 769;
    this.data = new Array(this.BASE).fill(0).map(() => new Array());
};

/** 
 * @param {number} key 
 * @param {number} value
 * @return {void}
 */
MyHashMap.prototype.put = function(key, value) {
    const h = this.hash(key);
    for (const element of this.data[h]) {
        if (element[0] === key) {
            element[1] = value;
            // 要 return !!!
            return;
        }
    }
    this.data[h].push([key, value]);
};

/** 
 * @param {number} key
 * @return {number}
 */
MyHashMap.prototype.get = function(key) {
    const h = this.hash(key);
    for (const element of this.data[h]) {
        if (element[0] === key) {
            return element[1];
        }
    }
    return -1;
};

/** 
 * @param {number} key
 * @return {void}
 */
MyHashMap.prototype.remove = function(key) {
    const h = this.hash(key);
    for (let i = 0; i < this.data[h].length; ++i) {
        if (this.data[h][i][0] === key) {
            this.data[h].splice(i, 1);
            return;
        }
    }
};

MyHashMap.prototype.hash = function(key) {
    return key % this.BASE;
};
           
LeetCode705 設計哈希集合 &amp; 706 設計哈希映射LeetCode705 設計哈希集合706 設計哈希映射