leetcode 1

想利用pair对应数值与下标的关系,再对容器中的数值进行排序,对排序后的数进行处理。

处理方法是这样的,取第一个数即最小得数和最后一个数即最大的数。

两者相加如果==target 直接退出,得到响应两个数对应的下标(注:最后结果的下标是从小到大的)

两者相加如果<target,则最小的数向后移。

两者相加如果>target,则最大的数向前移.

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         pair<int,int>a,b,c;
 5         vector<pair<int,int>>tot;
 6         for(int i=0;i<nums.size();i++) {
 7             a=make_pair(nums[i],i);
 8             tot.push_back(a);
 9         }
10         sort(tot.begin(),tot.end());
11         for(int i=0,j=nums.size()-1;i<nums.size();) {
12             a=tot[i];
13             b=tot[j];
14             if(a.first+b.first==target) {
15                 c=make_pair(min(a.second,b.second),max(a.second,b.second));
16                 break;
17             }
18             else if(a.first+b.first<target)
19              i++;
20              else j--;
21         }
22         vector<int>result;
23          result.push_back(c.first);
24          result.push_back(c.second);
25         return result;
26     }
27 };

 

posted @ 2016-07-22 10:40  HYDhyd  阅读(106)  评论(0编辑  收藏  举报