今天先熟悉熟悉, 希望后面能一次就过
1 #include <vector>
2 #include <algorithm>
3
4 using namespace std;
5
6 bool mycompare(const pair<int, int>&a, const pair<int, int>& b)
7 {
8 return a.first < b.first;
9 }
10
11 class Solution {
12 public:
13 vector<int> twoSum(vector<int>& nums, int target) {
14 vector<pair<int, int> > vecPair(nums.size());
15 for (size_t i = 0; i < vecPair.size(); ++i){
16 vecPair[i] = make_pair(nums[i], i);
17 }
18 sort (vecPair.begin(), vecPair.end(), mycompare);
19 vector<int> result;
20 int a = 0;
21 int b = vecPair.size()-1;
22 while (a<b){
23 int sum = vecPair[a].first + vecPair[b].first;
24 if (sum == target){
25 break;
26 }
27 if (sum < target){
28 ++ a;
29 }
30 else {
31 -- b;
32 }
33 }
34 if (a < b){
35 result.push_back(vecPair[a].second);
36 result.push_back(vecPair[b].second);
37 }
38 return result;
39 }
40 };