class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int low = 0, high = numbers.size() - 1;
while (low < high) {
int sum = numbers[low] + numbers[high];
if (sum == target) {
return {low + 1, high + 1};
} else if (sum < target) {
++low;
} else {
--high;
}
}
return {-1, -1};
}
};
这题做得实际有点迷。。
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
unordered_map<int, int> hashtable;
for (int i = 0; i < numbers.size(); ++i) {
auto it = hashtable.find(target - numbers[i]);
if (it != hashtable.end()) {
return {it->second+1,i+1};
}
hashtable[numbers[i]] = i;
}
return {};
}
};
两数之和Ⅰ也可以解。
加油叭。