成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LeetCode - 001 - 兩數(shù)之和(two-sum)

habren / 3423人閱讀

摘要:解法返回目錄解題代碼執(zhí)行測試解題思路使用雙重循環(huán)破解。解法返回目錄解題代碼執(zhí)行測試知識點遍歷數(shù)組,返回遍歷項,返回當(dāng)前索引。

Create by jsliang on 2019-05-16 22:19:13
Recently revised in 2019-05-17 14:22:40

Hello 小伙伴們,如果覺得本文還不錯,記得給個 star , 小伙伴們的 star 是我持續(xù)更新的動力!GitHub 地址

LeetCode 攻略地址

一 目錄

不折騰的前端,和咸魚有什么區(qū)別

目錄
一 目錄
二 前言
三 解題
?3.1 解法 - for()
?3.2 解法 - indexOf()
?3.3 解法 - Map
二 前言

返回目錄

難度:簡單

涉及知識:數(shù)組、哈希表

題目地址:leetcode-cn.com/problems/tw…

題目內(nèi)容

給定一個整數(shù)數(shù)組 nums 和一個目標值 target,請你在該數(shù)組中找出和為目標值的那 兩個 整數(shù),并返回他們的數(shù)組下標。

你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,你不能重復(fù)利用這個數(shù)組中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
三 解題

返回目錄

官方題解:leetcode-cn.com/problems/tw…

解題千千萬,官方獨一家,上面是官方使用 Java 進行的題解。

小伙伴可以先自己在本地嘗試解題,再看看官方解題,最后再回來看看 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í)行測試

    nums[1, 3, 2, 5, 6]

    target: 8

    return

[1, 3]

解題思路:使用雙重 for 循環(huán)破解。

    第一遍過濾 nums 數(shù)組,標記為 i

    第二遍再次過濾 nums 數(shù)組,標記為 i + 1,因為我們是對數(shù)組中的兩個數(shù)字相加,所以不能重復(fù)使用同一個數(shù)字。

    判斷第二次遍歷的數(shù)字中,它是否等于 target - nums[i],如果成立就返回兩個數(shù)字的索引。(并不考慮后面還有可成立的答案)。

3.2 解法 - indexOf()

返回目錄

解題代碼

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í)行測試

    nums[4, 3, 2, 5, 6]

    target: 8

    return

[2, 4]

知識點

    map():遍歷數(shù)組,item 返回遍歷項,index 返回當(dāng)前索引。map() 詳細介紹

    indexOf():判斷數(shù)組中是否存在判斷條件中的值。如果存在,則返回第一次出現(xiàn)的索引;如果不存在,則返回 -1。indexOf() 詳細介紹

    sort():排序,保持返回數(shù)組的數(shù)字為順序排列。sort() 詳細介紹

解題思路

首先,我們開辟一塊內(nèi)存 result。

然后,我們通過 map() 遍歷 nums,并使用 indexOf() 尋找除當(dāng)前 itemindex 之外和 item 相加之和為 target 的結(jié)果。

最后,我們返回查找的最新結(jié)果,該結(jié)果進行了排序([4, 2] 的返回通過 sort() 排序變成 [2, 4]

例如,在上面測試 twoSum([1, 3, 2, 5, 6], 8) 的結(jié)果就有:

[1, 3]
[2, 4]
[3, 1]
[4, 2]

我們?nèi)∽詈笠淮蔚慕Y(jié)果并排序返回,即:[2, 4]

進一步思考:如果我們將 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í)行測試

    nums[4, 3, 2, 5, 6]

    target: 8

    return

[1, 3]

知識點

    Map:保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。Map 詳細介紹

解題思路

首先,我們需要了解 Map 這個對象。

    它可以通過 set() 的形式,以 [key, value] 的形式保存一組數(shù)據(jù)。(題目中對應(yīng) key 就是存入的 target - nums[i] 值,value 就是索引)

    它可以通過 get() 的形式,獲取到傳入 key 值對應(yīng)的 value。

    它可以通過 has() 的形式,判斷 Map 對象里面是否存儲了傳入 key 對應(yīng)的 value。

然后,我們遍歷 nums 數(shù)組。

最后,我們判斷 nums[i] 是否存在于 Map 對象中。沒有的話,就存入 target - nums[i]Map 中。有的話,因為上次存入的是 target- nums[i],有點類似于解題的鑰匙,既然我們看到 nums[i] 存在于 Map 中,它是解題的鑰匙,所以我們只需要返回 [map.get(nums[i]), i] 這組值即可。


jsliang 廣告推送:
也許小伙伴想了解下云服務(wù)器
或者小伙伴想買一臺云服務(wù)器
或者小伙伴需要續(xù)費云服務(wù)器
歡迎點擊 云服務(wù)器推廣 查看!


jsliang 的文檔庫 由 梁峻榮 采用 知識共享 署名-非商業(yè)性使用-相同方式共享 4.0 國際 許可協(xié)議進行許可。
基于github.com/LiangJunron…上的作品創(chuàng)作。
本許可協(xié)議授權(quán)之外的使用權(quán)限可以從 creativecommons.org/licenses/by… 處獲得。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/7282.html

相關(guān)文章

  • LeetCode 攻略 - 2019 年 7 月上半月匯總(55 題攻略)

    摘要:微信公眾號記錄截圖記錄截圖目前關(guān)于這塊算法與數(shù)據(jù)結(jié)構(gòu)的安排前。已攻略返回目錄目前已攻略篇文章。會根據(jù)題解以及留言內(nèi)容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目錄 不...

    warmcheng 評論0 收藏0
  • 兩數(shù)之和問題各變種多解法小結(jié)

    摘要:兩數(shù)之和問題各變種多解法小結(jié)聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請注明出處兩數(shù)之和等于題目大意給出未排序數(shù)組和指定目標,返回數(shù)組中兩數(shù)之和的組合元素下標要求下標從開始,而且,保證題目中有且只有個可行解解法暴力時間復(fù)雜度求解解題思路暴力二重循環(huán)求解 兩數(shù)之和問題各變種多解法小結(jié) 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請注明出處:[1] https://segmentfault.com/u/yzwal...

    lentoo 評論0 收藏0
  • leetcode系列】001-兩數(shù)之和

    摘要:題意給定一個整數(shù)數(shù)組和一個目標值,請你在該數(shù)組中找出和為目標值的那兩個整數(shù),并返回他們的數(shù)組下標。也就是說,字典里記錄的是每個數(shù)據(jù)希望找到的另一半的值的大小。返回這兩個下標就行,如果沒有存在于字典里,那么繼續(xù)存入字典。 showImg(https://segmentfault.com/img/bVbvgPA); 題意: 給定一個整數(shù)數(shù)組 nums 和一個目標值 target,請你在該數(shù)...

    EddieChan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<