av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

javascript - 下面的這段算法代碼求解釋

瀏覽:97日期:2023-04-02 16:39:01

問題描述

javascript - 下面的這段算法代碼求解釋

就是關(guān)于這個(gè)算法的代碼,用javascript實(shí)現(xiàn)的,但是下面這個(gè)算法沒看懂。求大神解釋。

var twoSum = function(nums, target) { var ret = []; var exist = {}; for(var i = 0; i < nums.length; i++){if(typeof(exist[target - nums[i]]) !== ’undefined’){ ret.push(exist[target - nums[i]]); ret.push(i + 1);}exist[nums[i]] = i + 1; }return ret};

問題解答

回答1:

題主可以試著用例子代入進(jìn)去走讀一遍代碼。下面是我的見解:

比如就按截圖里的例子:

for循環(huán)里主要是遍歷第一個(gè)參數(shù)數(shù)組,然后它做的關(guān)鍵兩個(gè)步驟:

我們先看if后面那個(gè), exist[nums[i]] = i + 1; 這句是每個(gè)循環(huán)都會(huì)執(zhí)行的,exist在這里是字典的意思,比如遍歷第一個(gè)數(shù)是2(i=0),于是exist就保存了:{2:1} 這樣的鍵值對(duì),所以一遍循環(huán)下來,exist將會(huì)是:數(shù)組反過來,“元素值”:'數(shù)組索引+1'的鍵值對(duì)字典。

接下來,再去看if里面的判斷,當(dāng)然for循環(huán)i=0時(shí),exist還沒有注入鍵值對(duì),if表達(dá)式為false

但到了i=1的時(shí)候 exist[target-nums[1]] 即exist[9-7] = exist[2], 這不就是剛才i=0的時(shí)候,就注入exist的第一個(gè)鍵值對(duì)么?于是乎,把對(duì)應(yīng)的鍵值對(duì)的值(其實(shí)就是原數(shù)值的在原來數(shù)組的索引+1)存檔ret去,接著又把當(dāng)前的 i+1 也存到ret……最后循環(huán)走完,返回ret,于是得到了[1,2] ps:題主給的例子答案跟代碼的不一致。

總結(jié):這個(gè)算法核心就是利用的對(duì)象exist來存已遍歷過的數(shù)組元素,利用target-nums[i] 反過來間接通過exist來查找數(shù)組已遍歷過的元素是否存在符合條件的元素。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 久久国产精品免费一区二区三区 | 99久久免费精品国产免费高清 | 天天看天天操 | 国产女人与拘做受视频 | 午夜成人在线视频 | 国产 日韩 欧美 中文 在线播放 | 中文字幕人成乱码在线观看 | 久久久久中文字幕 | 视频精品一区 | 久久久性色精品国产免费观看 | 羞羞视频免费在线观看 | 超碰免费在线 | 欧美激情 亚洲 | 欧美日韩视频 | 国产日韩久久 | 亚洲欧美综合 | 亚洲欧洲在线视频 | 国产婷婷精品 | 欧美一区二区三区精品免费 | 久久久五月天 | 综合二区 | 亚洲综合在线播放 | 无码日韩精品一区二区免费 | 色婷婷综合在线观看 | 国产99视频精品免视看9 | 国产亚洲精品美女久久久久久久久久 | 欧美精品福利视频 | 国产亚洲精品久久情网 | 综合一区二区三区 | 国产激情精品视频 | 免费精品视频一区 | 日本一区二区高清不卡 | 欧美中文字幕一区二区三区亚洲 | 日韩欧美三级在线 | 亚洲一区毛片 | 精品亚洲一区二区三区四区五区 | 久久国产一区二区 | 日韩一区在线播放 | 欧美精品一二三 | 久久免费国产 | 精品久久香蕉国产线看观看亚洲 |