首页 > 其他 > 详细

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

时间:2014-11-04 22:50:52      阅读:365      评论:0      收藏:0      [点我收藏+]

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!