【1】Two Sum

来源:互联网 发布:淘宝买家号能开店吗 编辑:程序博客网 时间:2024/06/06 09:53

为每个num加一个ID,以记录其位置,并按num排序。然后用O(n)的算法求两数之和为一指定的数

typedef struct{    int num;    int id;}NODE;bool cmp(const NODE& a,const NODE& b){   return a.num<b.num;}vector<int> twoSum(vector<int>& nums, int target) {    int n=nums.size();    vector<NODE> nums_id;    for(int i=0;i<n;i++){        NODE temp;        temp.num=nums[i];        temp.id=i;        nums_id.push_back(temp);    }    vector<int> res;    sort(nums_id.begin(),nums_id.end(),cmp);    for(int i=0,j=n-1;i<j;){        if(nums_id[i].num+nums_id[j].num==target){            res.push_back(nums_id[i].id);            res.push_back(nums_id[j].id);            break;        }        else if(nums_id[i].num+nums_id[j].num<target)i++;        else j--;    }    return res;}

0 0
原创粉丝点击