O
问题
content
思路
- 递增的数列里面包含了一些信息。这道题暴力方法复杂度为N^2。 另外一种方法是固定左边, 右边根据target移动。但是这不是双指针的传统方法, 我们需要注意这道题让打印乘积最小的隐含条件是左边最小的一组。 因此采用类似二分查找的左右指针切换方法。
coding
- define ans vector ;
- define left right
- while()
-
- sum = a[left] + a[right-1];
-
-
-
- return ans;
总结与反思
- vector使用api要熟练, 创建和塞入都不会。
代码实现
class Solution {
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum) {
vector<int> ans;
int left = 0, right = array.size();
int temp = 0;
while(left<right){
temp = array[left]+ array[right-1];
if(temp==sum){
ans.push_back(array[left]);
ans.push_back(array[right-1]);
return ans;
}
else if(temp>sum)right--;
else if(temp<sum)left++;
}
return ans;
}
};