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

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

时间:2014-11-04 22:53:47      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   使用   for   on   2014   log   amp   

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

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全局指针的使用】

标签:blog   io   os   使用   for   on   2014   log   amp   

原文地址:http://blog.csdn.net/cklsoft/article/details/40793203

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