【JS攻略Leetcode】No.1.Two Sum(兩數(shù)之和)

引言:用Js攻略leetcode中的算法,將會介紹自己的思路和注意點,一邊學(xué)習(xí)一邊愉快刷題呀。

問題:

給定一個整數(shù)數(shù)組和一個目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個數(shù)。你可以假設(shè)每個輸入只對應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。
實例:
給定 nums = [2, 7, 11, 15], target = 9因為 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]

思考:

  1. 為了提高算法效率,先開始想數(shù)組進(jìn)行排序后,找到小于target的最大值再進(jìn)行查找第二個值。后來發(fā)現(xiàn):不對呀!我們要返回的是在原數(shù)組的順序,假設(shè)nums = [3,6,3], target = 6, 排序后位置信息就丟失啦。
  2. 然后就想用es6新增的Map數(shù)據(jù)結(jié)構(gòu),結(jié)果發(fā)現(xiàn)map鍵值是覆蓋的,如下圖:


    image.png
  3. 所以,最后我還是采用了暴力法:遍歷每個元素 x,并查找是否存在一個值與 target - x相等的目標(biāo)元素。
  4. 相關(guān)問題:數(shù)組進(jìn)行排序,想用sort()語法,結(jié)果發(fā)現(xiàn)兩點需要注意:一是數(shù)組sort改變了原數(shù)組,解決方法用slice復(fù)制一個新array:

numSort = num.slice(0).sort();

二是排序是按照字符串一位一位進(jìn)行比較的,解決方法sort中定義排序函數(shù):

num.slice(0).sort((a,b)=>a-b)

image.png

代碼:

var twoSum = function(nums, target) {
    var index=[];
    for(var i = nums.length-1; i > 0; i--) {
        for(var j = i - 1; j >= 0; j--) {
            if(nums[j] + nums[i] == target) {
                index.push(j);
                index.push(i);
                return index;
            }
        }
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,374評論 0 3
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,935評論 0 33
  • 海明威說過,一個人可以被毀滅,但絕不會被打敗,這句話甚至被寫入了我們的教科書,于是在這么氣勢雄壯的語氣背后...
    幾開閱讀 827評論 1 1
  • 若沒有深愛 請別故作深情 我怕辜負(fù)了歲月 打擾了愛情 若沒有在乎 也別紳士的牽手 我怕手心的溫度 再也沒有緊握的溫...
    Jane1116閱讀 234評論 3 0
  • golang1.5實現(xiàn)了自舉. 意思就是用go語言寫的go語言. 這樣想編譯安裝go就不好辦了...因為你都沒有g(shù)...
    radio閱讀 937評論 0 0

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