先給題
給定一個整數陣列 nums 和一個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,并回傳它們的陣列下標,
你可以假設每種輸入只會對應一個答案,但是,陣列中同一個元素不能使用兩遍,
你可以按任意順序回傳答案,
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/two-sum
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
首先我沒考慮暴力破解,去想優良的解法,但一直找不到,后來試了一下暴力破解,其實暴力破解就是這答案的一種,
之所以記錄這個簡單的題是因為我沒想到哈希,資料結構學了哈希卻一直沒用過,所以記錄下這個題,
1.暴力破解
這個就不解釋了,直接上代碼,
vector<int> twoSum(vector<int>& nums, int target) {
for(int i = 0; i < nums.size() - 1; i++)
for(int j = i + 1; j < nums.size(); j++)
if(nums[i] + nums[j] == target)
return {i,j};
return {};
}
2.哈希
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i) {
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) {
return {it->second, i};
}
hashtable[nums[i]] = i;
}
return {};
}
};
來源于https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258624.html
標籤:其他
上一篇:C#高級篇——初識LINQ
