1. 两数之和
题解
解法一
使用顺序查找target - nums[i]在nums数组中是否存在。
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
for(int i = 0; i < nums.size(); ++i) {
int t = target - nums[i];
vector<int>::iterator it = find(nums.begin(), nums.end(), t);
if(it == nums.end() || it - nums.begin() == i) continue;
res.push_back(i);
res.push_back(it - nums.begin());
break;
}
return res;
}
解法二
使用二分查找查找target-nums[i]在nums数组中是否存在。
注 是两个数,不能用一个数加两边。