要在整數陣列中,去湊出符合 target 的元素
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for(int i=0;i<n;i++){
// j要從i+1開始,因為不能重複
for(int j=i+1;j<n;j++){
if(nums[i]+nums[j]==target){
return {i, j};
}
}
}
return {};
}
};
建立一個 Hash Table,然後每次去紀錄 x,同時檢查 target-x 這樣的數字是否存在
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> map;
int n = nums.size();
for(int i=0;i<n;i++){
int temp = target - nums[i];
if(map.count(temp)){
return {map[temp], i}; // 返回找到的索引
}
map[nums[i]] = i; // 儲存當前數字及其索引
}
return {};
}
};