probem:1. Two Sum

 今天先熟悉熟悉, 希望后面能一次就过
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 };

 

posted @ 2016-09-06 20:31  nosaferyao  阅读(155)  评论(0编辑  收藏  举报