題目描述:
題解:
一、暴力破解
vector<int> twoSumBF(vector<int>& nums, int target) { //brute force
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
for (int j = 0; j < nums.size(); j++) {
if ((complement == nums[j]) && (i != j)) {
return vector<int>{i, j};
}
}
}
return vector<int>{-1};
}
二、哈希表查找
vector<int> twoSumHash(vector<int>& nums, int target) {
unordered_map<int, int> record;
for (int i = 0; i < nums.size(); i++) {
int complement = target - nums[i];
if (record.find(complement) != record.end()) {
int res[] = { i, record[complement] };
return vector<int>{res, res + 2};
}
record[nums[i]] = i;
}
return vector<int>{-1};
}
關於哈希表,參考:C++: map/hash_map/unordered_map