2018-06-06Hashmap

先看一道題:
給定一個(gè)數(shù)組 nums = [2, 7, 11, 15]
要求找出數(shù)組中任意兩個(gè)數(shù)相加等于 target = 9
返回兩個(gè)數(shù)的下標(biāo)
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

暴力破解方法采用兩重循環(huán):

var twoSum = function(nums, target) {
   for(let x=0;x<nums.length;x++){
       for(let y=x+1;y<nums.length;y++){
           if(nums[x]+nums[y]===target){
               return [x,y]
           }
       }
   }
};
twoSum([2,7,11,15],9)

雖然兩層循環(huán)求出了結(jié)果,但是這個(gè)解決方法的時(shí)間復(fù)雜度為N的2次方。
要降低時(shí)間復(fù)雜度可以采用hashmap,hashmap是一種以鍵值對(duì)存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),但是它的鍵是通過散列函數(shù)生成的位置或索引,也正因?yàn)榇?,我們可以更快地訪問某個(gè)值(散列表的查找復(fù)雜度為O(1),而其他順序數(shù)據(jù)結(jié)構(gòu)如棧、隊(duì)列、鏈表的查找復(fù)雜度都為O(n),因?yàn)樾枰闅v。
JavaScript的Object本身就是hashmap,JavaScript 的對(duì)象屬性查找是哈希查找,時(shí)間復(fù)雜的是 O(1)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容