题解 | #JZ35 复杂链表的复制#

复杂链表的复制

https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba

/*
struct RandomListNode {
    int label;
    struct RandomListNode *next, *random;
    RandomListNode(int x) :
            label(x), next(NULL), random(NULL) {
    }
};
*/
class Solution {
public:
    
    RandomListNode* Clone(RandomListNode* pHead) {
        RandomListNode* copyHead = NULL;
        RandomListNode* temp = pHead;
        RandomListNode* copytemp = copyHead;
        int index;
        vector <RandomListNode*> origin,copy,randomlist;
        if(pHead == NULL){
            return NULL;
        }
        while(temp != NULL){
            origin.push_back(temp);
            RandomListNode* node = new RandomListNode(temp->label);
            copy.push_back(node);
            randomlist.push_back(temp->random);
            // cout<< temp->label<<' ';
            if(copytemp == NULL){
                copyHead = node;
                copytemp = copyHead;
            }
            else{
                copytemp->next = node;
                copytemp=copytemp->next;

            }
            temp=temp->next;

        }
        copytemp = copyHead;
        for(int i = 0;i<origin.size();i++){
            index = find(origin.begin(),origin.end(),randomlist[i])-origin.begin();
            copytemp->random = copy[index];
            copytemp = copytemp->next;

        }
        return copyHead;
        
    }
};

全部评论

相关推荐

06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务