摘要:解法返回目錄解題代碼執(zhí)行測(cè)試解題思路使用雙重循環(huán)破解。解法返回目錄解題代碼執(zhí)行測(cè)試知識(shí)點(diǎn)遍歷數(shù)組,返回遍歷項(xiàng),返回當(dāng)前索引。
Create by jsliang on 2019-05-16 22:19:13
Recently revised in 2019-05-17 14:22:40
Hello 小伙伴們,如果覺得本文還不錯(cuò),記得給個(gè) star , 小伙伴們的 star 是我持續(xù)更新的動(dòng)力!GitHub 地址
LeetCode 攻略地址
一 目錄不折騰的前端,和咸魚有什么區(qū)別
目錄 |
---|
一 目錄 |
二 前言 |
三 解題 |
?3.1 解法 - for() |
?3.2 解法 - indexOf() |
?3.3 解法 - Map |
返回目錄
難度:簡(jiǎn)單
涉及知識(shí):數(shù)組、哈希表
題目地址:leetcode-cn.com/problems/tw…
題目?jī)?nèi)容:
給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那 兩個(gè) 整數(shù),并返回他們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因?yàn)?nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]三 解題
返回目錄
官方題解:leetcode-cn.com/problems/tw…
解題千千萬,官方獨(dú)一家,上面是官方使用 Java 進(jìn)行的題解。
小伙伴可以先自己在本地嘗試解題,再看看官方解題,最后再回來看看 jsliang 講解下使用 JavaScript 的解題思路。
3.1 解法 - for()返回目錄
解題代碼:
var twoSum = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[j] === target - nums[i]) {
return [i, j];
}
}
}
};
執(zhí)行測(cè)試:
nums:[1, 3, 2, 5, 6]
target: 8
return:
[1, 3]
解題思路:使用雙重 for 循環(huán)破解。
第一遍過濾 nums 數(shù)組,標(biāo)記為 i。
第二遍再次過濾 nums 數(shù)組,標(biāo)記為 i + 1,因?yàn)槲覀兪菍?duì)數(shù)組中的兩個(gè)數(shù)字相加,所以不能重復(fù)使用同一個(gè)數(shù)字。
判斷第二次遍歷的數(shù)字中,它是否等于 target - nums[i],如果成立就返回兩個(gè)數(shù)字的索引。(并不考慮后面還有可成立的答案)。
返回目錄
解題代碼:
var twoSum = function(nums, target) {
let result = [];
nums.map((item, index) => {
if (nums.indexOf(target - item) > -1 && nums.indexOf(target - item) != index) {
result = [index, nums.indexOf(target - item)].sort((a, b) => a > b);
}
});
return result;
};
執(zhí)行測(cè)試:
nums:[4, 3, 2, 5, 6]
target: 8
return:
[2, 4]
知識(shí)點(diǎn):
map():遍歷數(shù)組,item 返回遍歷項(xiàng),index 返回當(dāng)前索引。map() 詳細(xì)介紹
indexOf():判斷數(shù)組中是否存在判斷條件中的值。如果存在,則返回第一次出現(xiàn)的索引;如果不存在,則返回 -1。indexOf() 詳細(xì)介紹
sort():排序,保持返回?cái)?shù)組的數(shù)字為順序排列。sort() 詳細(xì)介紹
解題思路:
首先,我們開辟一塊內(nèi)存 result。
然后,我們通過 map() 遍歷 nums,并使用 indexOf() 尋找除當(dāng)前 item 的 index 之外和 item 相加之和為 target 的結(jié)果。
最后,我們返回查找的最新結(jié)果,該結(jié)果進(jìn)行了排序([4, 2] 的返回通過 sort() 排序變成 [2, 4])
例如,在上面測(cè)試 twoSum([1, 3, 2, 5, 6], 8) 的結(jié)果就有:
[1, 3]
[2, 4]
[3, 1]
[4, 2]
我們?nèi)∽詈笠淮蔚慕Y(jié)果并排序返回,即:[2, 4]
進(jìn)一步思考:如果我們將 map() 換成 for(),你知道該如何操作么?
3.3 解法 - Map返回目錄
解題代碼:
var twoSum = function(nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
if (map.has(nums[i])) {
return [map.get(nums[i]), i];
} else {
map.set(target - nums[i], i);
}
}
};
執(zhí)行測(cè)試:
nums:[4, 3, 2, 5, 6]
target: 8
return:
[1, 3]
知識(shí)點(diǎn):
Map:保存鍵值對(duì)。任何值(對(duì)象或者原始值) 都可以作為一個(gè)鍵或一個(gè)值。Map 詳細(xì)介紹
解題思路:
首先,我們需要了解 Map 這個(gè)對(duì)象。
它可以通過 set() 的形式,以 [key, value] 的形式保存一組數(shù)據(jù)。(題目中對(duì)應(yīng) key 就是存入的 target - nums[i] 值,value 就是索引)
它可以通過 get() 的形式,獲取到傳入 key 值對(duì)應(yīng)的 value。
它可以通過 has() 的形式,判斷 Map 對(duì)象里面是否存儲(chǔ)了傳入 key 對(duì)應(yīng)的 value。
然后,我們遍歷 nums 數(shù)組。
最后,我們判斷 nums[i] 是否存在于 Map 對(duì)象中。沒有的話,就存入 target - nums[i] 到 Map 中。有的話,因?yàn)樯洗未嫒氲氖?target- nums[i],有點(diǎn)類似于解題的鑰匙,既然我們看到 nums[i] 存在于 Map 中,它是解題的鑰匙,所以我們只需要返回 [map.get(nums[i]), i] 這組值即可。
jsliang 廣告推送:
也許小伙伴想了解下云服務(wù)器
或者小伙伴想買一臺(tái)云服務(wù)器
或者小伙伴需要續(xù)費(fèi)云服務(wù)器
歡迎點(diǎn)擊 云服務(wù)器推廣 查看!
jsliang 的文檔庫 由 梁峻榮 采用 知識(shí)共享 署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際 許可協(xié)議進(jìn)行許可。
基于github.com/LiangJunron…上的作品創(chuàng)作。
本許可協(xié)議授權(quán)之外的使用權(quán)限可以從 creativecommons.org/licenses/by… 處獲得。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/7282.html
摘要:微信公眾號(hào)記錄截圖記錄截圖目前關(guān)于這塊算法與數(shù)據(jù)結(jié)構(gòu)的安排前。已攻略返回目錄目前已攻略篇文章。會(huì)根據(jù)題解以及留言內(nèi)容,進(jìn)行補(bǔ)充,并添加上提供題解的小伙伴的昵稱和地址。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目錄 不...
摘要:兩數(shù)之和問題各變種多解法小結(jié)聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處兩數(shù)之和等于題目大意給出未排序數(shù)組和指定目標(biāo),返回?cái)?shù)組中兩數(shù)之和的組合元素下標(biāo)要求下標(biāo)從開始,而且,保證題目中有且只有個(gè)可行解解法暴力時(shí)間復(fù)雜度求解解題思路暴力二重循環(huán)求解 兩數(shù)之和問題各變種多解法小結(jié) 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處:[1] https://segmentfault.com/u/yzwal...
摘要:題意給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù),并返回他們的數(shù)組下標(biāo)。也就是說,字典里記錄的是每個(gè)數(shù)據(jù)希望找到的另一半的值的大小。返回這兩個(gè)下標(biāo)就行,如果沒有存在于字典里,那么繼續(xù)存入字典。 showImg(https://segmentfault.com/img/bVbvgPA); 題意: 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請(qǐng)你在該數(shù)...
閱讀 1212·2021-10-09 09:43
閱讀 19168·2021-09-22 15:52
閱讀 1161·2019-08-30 15:44
閱讀 3121·2019-08-30 15:44
閱讀 3307·2019-08-26 14:07
閱讀 965·2019-08-26 13:55
閱讀 2631·2019-08-26 13:41
閱讀 3163·2019-08-26 13:29