LeetCode 138. Copy List with Random Pointer
来源:互联网 发布:淘宝买家手机号提取 编辑:程序博客网 时间:2024/04/28 04:35
deep copy:深拷贝,涉及到指针的时候的概念,如果只是简单的将指针的值复制给另一个指针变量,叫浅拷贝,若是创建一个新的空间,并且将指针的地址值指向的值复制给创建的新空间,就叫深拷贝。
解题思路:首先不去管random,创建一条新的链表,新链表中的节点中label的值和旧链表中的值相同而且位置也相同,建立一个map<RandomListNode *,RandomListNode*>,记录新链表和旧链表的对应关系。 然后遍历链表将random的值根据旧链表中random的值和map中的对应关系赋值。
class Solution {
public:RandomListNode *copyRandomList(RandomListNode *head) {
if(head==NULL)
{
return NULL;
}
map<RandomListNode *,RandomListNode*> m;
map<RandomListNode *,RandomListNode*>::iterator it;
RandomListNode *p=head;
RandomListNode *q=new RandomListNode(head->label);
RandomListNode *e=q;
m.insert(map<RandomListNode *,RandomListNode*>::value_type(p,q));
p=p->next;
while(p!=NULL)
{
RandomListNode *l=new RandomListNode(p->label);
e->next=l;
m.insert(map<RandomListNode *,RandomListNode*>::value_type(p,l));
p=p->next;
e=l;
}
e->next=NULL;
e=q;
p=head;
while(e!=NULL)
{
if(p->random==NULL)
{
e->random=NULL;
}
if(p->random!=NULL)
{
it=m.find(p->random);
e->random=it->second;
}
e=e->next;
p=p->next;
}
return q;
}
};
0 0
- LeetCode 138. Copy List with Random Pointer
- [Leetcode] 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [leetcode] 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- leetcode.138. Copy List with Random Pointer
- LeetCode-138.Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- [Leetcode]138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [LeetCode] 138. Copy List with Random Pointer
- [LeetCode]138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- Leetcode-138. Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- leetcode 138. Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- java设计模式-单例模式
- EcmaScript6学习之入门
- python2.7和 python3.4的却别
- locate命令
- Android多语言实现
- LeetCode 138. Copy List with Random Pointer
- centos6u3安装stringi时遇到的问题及解决
- String类的构造
- flume1.6.0的安装
- Eclipse实现安卓客户端的版本更新
- @interface使用
- 【网络优化】超轻量级网络SqueezeNet算法详解
- iOS开发-----响应链
- Unity学习日常问题记录一