給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的 兩個 整數。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]
採用雙重迴圈的方式,判斷num[i]和num[j]是否相加等於target,簡單直觀,但是需要兩次遍歷陣列,所以時間複雜度為o(n2)
c++**示例:
vectortwosum1(vector&nums,int target)}}
}
學習的乙個部落格大佬寫的,演算法小白回去慢慢的學習研究。利用雜湊表來儲存nums陣列中每乙個索引和索引所對應的值,然後根據索引值排序,利用雙對撞指標的方式(就是兩邊往中間擠)判斷,可以減少時間複雜度為o(nlogn),小白只能看著大佬的**自己再重寫**,慢僅供學習交流,不喜勿噴。
//按照pair的second值進行降序排列
bool compare(pairpair1, pairpair2)else
}vectortwosum2(vector& nums, int target)
sort(pairs.begin(), pairs.end(), compare);
int left = 0; //
int right = pairs.size() - 1;
vectorresult;
while(left < right)
else
}}
LeetCode 001 兩數之和
給定乙個整數陣列nums和乙個整數目標值target,請你在該陣列中找出和為目標值的那兩個 整數,並返回它們的陣列下標。輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋 因為 nums 0 nums 1 9 返回 0,1 定義乙個map,key為陣列的值,value為值對應的...
LeetCode001 兩數之和 easy
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標 你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍 示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
Leetcode 001 兩數之和 擴充套件
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 分析 因為題目假設 每個輸入只對應一種答案,且相同的元素不能被重複利用 這就降低了難度。暴力法 使用兩次for迴圈。第乙個for迴圈依次遍歷一次陣列,每次執行過程中選取了乙...