方案一:(运行速度12ms)
对元素排序,最小数加上最大数,若和小于target,说明小数太小,用次小数替换。 若大于target,说明最大数太太,用次大数替换。
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">class Solution {</span>
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> backup(nums);
//将元素从小到大排序
sort(nums.begin(),nums.end());
// 最小数与最大数相加,若小于target,说明小数太小,用次小数替换。 若大于target,说明最大数太太,用次大数替换
vector<int>::iterator i1=nums.begin(),i2=nums.end()-1;
while((*i1+*i2)!=target)
{
while((*i1+*i2)<target)i1++;