leetcode刷題之路1 兩數之和

2022-08-13 05:45:13 字數 1550 閱讀 1467

題目:

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:給定 nums = [2, 7, 11, 15], target = 

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

陣列至少兩個數值

第一反應是用兩個for迴圈,但是這是最簡單的思想。

然後再細想,可以在相加之前加上判斷,相加的兩個數不可以比target大。目前也就想到這裡。哈哈,這裡想錯了,沒有想到有負數出現的情況,應該是第二個數必須大於target-第乙個數

#include #include

using

namespace

std;

vector

twosum(vector& nums, int

target)

for (int i = 0; i)

;return

ans;}}

}}

return

ans;

}int

main() ;

vector

ans = twosum(nums, 0

); std::cout

<< ans[0] << ans[1]

}

注:vector 的六種建立和初始化方法

29 / 29 個通過測試用例

執行用時:432 ms

服了。。。。。

向高手們學習:發現他們用了map來提公升速度。

注:關於vector和map查詢效率的驚人的實際測試結果

vector與map表的區別

vector和map的效率簡要比較

stl的map和hashmap比較

map和unordered_map的差別和使用

方法二:

vector twosum(vector& nums, int

target)

unordered_map

map1;

for (int n = 0; n)

for (int i = 0; i)

;return

ans;}}

return

ans;

}

執行用時:20 ms   舒服

方法三:

避免了判斷是否和自身相同

vector twosum(vector& nums, int

target)

unordered_map

map1;

for (int i = 0; i);}

return

ans;

}

執行用時:20 ms   

這道題複習了vector map hashmap的知識,要記住hashmap  map vector的基本用法以及操作,還要區分什麼時間用什麼好

LeetCode刷題之路 1 兩數之和

最近要開始刷題了,打算每天要刷一兩道演算法題,對於一些難的演算法知識點要及時搞懂 然後按時參加leetcode的周賽和雙周賽。立此部落格為證,作為監督。給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。你可以假設每種輸...

LeetCode刷題之路 兩數相加

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2 5,6,4 輸出 7,0,8 ...

LeetCode刷題之路 2 兩數相加

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。你可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 1 輸入 l1 2,4,3 l2 5,6,4 輸出 7,0,8 ...