題目:
給定乙個整數陣列nums
和乙個目標值target
,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
1 #include2 #include3 #include4using
namespace
std;56
class
solution
22//
p[nums[i]] = i;
//這是一種匯入方法;
23 p.insert (pair(nums[i],i)); //
這是另一種匯入方法;24}
25 res.push_back(-1
);26
return
res;27}
28};
2930
intmain()
總結:1這是個非常簡單的題目,普通的暴力演算法,應該是o(n^2);為了將時間複雜度降低,有兩個方向,其中乙個就是提高空間複雜度到o(n),利用map的查詢功能,快速定位目標。我這裡利用map查詢,所以時間複雜度只能是o(logn); 如果用hash_map還能繼續降低到o(n);
2還有乙個角度是,基於target的數值;首先假設數值是有序陣列,利用+方法的遞增的性質,可以避免很多計算,甚至可以利用猜測的方法,快速找到目標。但是這樣一來將會用使得程式比較複雜;
3使用hash_map 需要加上using namespace __gnu_cxx;
Leco題目 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
leetcode題目 1 兩數之和
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...
Leetcode題目1 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...