zoukankan      html  css  js  c++  java
  • 第35题:LeetCode138. Copy List with Random Pointer

    题目 

    给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。

    要求返回这个链表的深度拷贝。 


    考点


    思路


    代码

    /**
     * Definition for singly-linked list with a random pointer.
     * struct RandomListNode {
     *     int label;
     *     RandomListNode *next, *random;
     *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
     * };
     */
    class Solution {
    public:
        RandomListNode *copyRandomList(RandomListNode *head) {
        	RandomListNode* ptr=head;
        	RandomListNode* new_head=NULL;
        	std::vector<RandomListNode*> node_vec;
        	std::map<RandomListNode*,int>node_map;
            int i=0;
            
            while(ptr){
            	
            	node_map[ptr]=i;
            	node_vec.push_back(new RandomListNode(ptr->label));
            	
            	i++;
            	ptr=ptr->next;
    		}
    		
    		ptr=head;
    		node_vec.push_back(0);
    		i=0;
    		while(ptr){
    			node_vec[i]->next=node_vec[i+1];
    			if(ptr->random){
    				int id=node_map[ptr->random];
    				node_vec[i]->random=node_vec[id];
    			}
    			i++;
    			ptr=ptr->next;
    		}
    		return node_vec[0];
        }
    };

    问题

  • 相关阅读:
    Java的特性和优势
    MyBatis
    SpringBoot简介
    Liunx
    MySql简介与入门
    Volatile
    MySQL简介
    Redis
    Spring IoC
    什么是springboot
  • 原文地址:https://www.cnblogs.com/lightmare/p/10398740.html
Copyright © 2011-2022 走看看