vector<
int>
twosum
(vector<
int>
&nums,
int target)}}
return ret;
}
時間複雜度:o(n²) 兩重for迴圈**過程體驗:空間複雜度:o(1) 只用儲存ret
開始的時候想用範圍for,但是發現需要返回陣列下下標,而範圍for得到的是size_t型別不能用於下標返回
之後打算使用迭代器,但是迭代器型別對於本題是vector::iterator不能作為下標返回
vector<
int>
twosum
(vector<
int>
&nums,
int target)
//雜湊表尋找對應的值
for(
int i =
0; isize()
; i++)}
return ret;
}
時間複雜度:o(n) 雜湊表查詢為o(1),對n個元素列表遍歷兩次特別注意事項:空間複雜度:o(n) 額外空間儲存雜湊表的n對元素
if語句很重要,其中的兩個想與的條件的順序非常重要,必須判斷存在在前
原因:當判斷是否是自身在前的話
如果不存在,會先插入到對應的雜湊表中,插入內容是:差值=0,也就是說雜湊表中value為0的多了乙個,而且就是目標和陣列的差值,這樣的話,當迴圈到 i=1時候能夠得到,把差值又加了乙個,正好組成目標值
具體過程:
第一次迴圈:i = 0 雜湊表插入了 target-nums[0] = 0 但是其自身不行
第二次迴圈:i = 1 雜湊表插入了target-nums[1] =0 滿足了目標值,
即為 one_hash[1] + one_hash[0]
vector<
int>
twosum
(vector<
int>
&nums,
int target)
two_hash[nums[i]
]= i;
//插入雜湊表
}return ret;
}
時間複雜度:o(n) 雜湊表查詢為o(1),對n個元素列表遍歷一次空間複雜度:o(n) 額外空間儲存雜湊表的n對元素
注意:由於每次遍歷找差值都在之前的雜湊表找,由於遞增,因此輸出的順序要改變一下,先是差值下標,再是i
leetcode題解001:兩數之和
001 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例給定 nums 2 7,11 15 target 9因為 nums 0 nums 1 2 7 9所以...
LeetCode 001 兩數之和
給定乙個整數陣列nums和乙個整數目標值target,請你在該陣列中找出和為目標值的那兩個 整數,並返回它們的陣列下標。輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋 因為 nums 0 nums 1 9 返回 0,1 定義乙個map,key為陣列的值,value為值對應的...
LeetCode題解001 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...