章節連結
雜湊表是(Hash Table)由多個 key, value 對所組成的一個表。透過 Hash 雜湊值,就可以快速的找到對應的值,在操作上的時間複雜度為 1,無論是插入、刪除、更新……等。當資料跟排列順序無關,或是要計算出現次數(重複)值時,使用 Hash 是可用的方式。
指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/*Hash*/ function HashTable(){ let table = [] let loseloseHashCode = (key) =>{ let hash = 0 for(let i=0;i<key.length;i++){ hash += key.charCodeAt(i) } return hash % 37 } this.put = (key,value)=>{ let position = loseloseHashCode(key) console.log(position+'-'+key) table[position] = value } this.get = key =>{ return table[loseloseHashCode(key)] } this.remove = key =>{ table[loseloseHashCode(key)] = undefined } } let hash = new HashTable() console.log(hash.get('Andy')) console.log(hash.get('Sandy')) |
LeetCode 練習記錄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// 242. Valid Anagram https://leetcode.com/problems/valid-anagram/ /** * @param {string} s * @param {string} t * @return {boolean} */ var isAnagram = function(s, t) { if(s.length !== t.length) return false let hash = {} for(let i=0; i<s.length;i++){ if(!hash[s[i]]){ hash[s[i]] = 1 }else{ hash[s[i]] ++ } } for(let i=0;i<t.length;i++){ if(hash[t[i]]){ hash[t[i]] -- if(hash[t[i]].length<0){ return false } }else{ return false } } return true }; |