国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

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

問題描述

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

就是關于這個算法的代碼,用javascript實現的,但是下面這個算法沒看懂。求大神解釋。

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:

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

比如就按截圖里的例子:

for循環里主要是遍歷第一個參數數組,然后它做的關鍵兩個步驟:

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

接下來,再去看if里面的判斷,當然for循環i=0時,exist還沒有注入鍵值對,if表達式為false

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

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: www午夜| 久久国产精品亚洲 | 久久天天躁综合夜夜黑人鲁色 | 成人免费在线播放视频 | 亚洲精品片 | 一级女性全黄生活片免费 | 国产91一区二区在线播放不卡 | 国产区一区二 | 欧美成在线视频 | 黄a在线观看| 成人在线一区二区 | 欧美视频综合 | 九九精品视频一区二区三区 | 在线观看精品自拍视频 | 精品国产免费一区二区三区 | 在线看a级片 | 性欧美欧美巨大69 | 成人老司机深夜福利久久 | 久久福利资源国产精品999 | 女人被男人躁得好爽免费视频免费 | 国产日韩一区二区三区在线播放 | 欧美一级特黄一片免费 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 一级做a爱 一区 | 草草影院www色欧美极品 | 亚洲人成影院午夜网站 | 国产三级日本三级日产三 | 国产精品精品国产 | 国产美女一级毛片 | 国产天堂亚洲精品 | 91精品国产91久久久久 | 亚洲精品久久久久久久久久久网站 | 久久成人性色生活片 | 成人做爰视频www视频 | 欧美白人和黑人xxxx猛交视频 | 国产精品96久久久久久久 | 久久99国产亚洲精品观看 | 国产精品久久久久久久午夜片 | 国产免费一区二区三区免费视频 | 成年性午夜免费视频网站不卡 | 欧美另类色 |