码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Two Sum 【Vector全局指针的使用】

时间:2017-07-09 13:54:48      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:trick   data-   ++i   bool   for   ack   name   --   使用   

无序数组返回两个元素和为给定值的下标。

tricks:无序、返回下标增序、返回的是原始数组的下标。


vector<int>*pa;
bool cmp(int x,int y){
    return (*pa)[x]<(*pa)[y];
}
class Solution {
public:
    vector<int> twoSum(vector<int> &a, int t) {
        int n=a.size();
        pa=&a;
        int* id=new int[n],i=0,j=n-1;
        for(i=0;i<n;++i){
            id[i]=i;
        }
        sort(id,id+n,cmp);
        for(i=0,j=n-1;i<j;){
            if(a[id[i]]+a[id[j]]==t)break;
            else if(a[id[i]]+a[id[j]]<t)
                ++i;
            else --j;
        }
        vector<int>v;
        if(id[i]<id[j]){
            v.push_back(id[i]+1);v.push_back(1+id[j]);
        }
        else {v.push_back(1+id[j]);
            v.push_back(id[i]+1);
        }
        delete[]id;
        return v;
    }
};


[LeetCode]Two Sum 【Vector全局指针的使用】

标签:trick   data-   ++i   bool   for   ack   name   --   使用   

原文地址:http://www.cnblogs.com/wzzkaifa/p/7141088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!