1 Star 0 Fork 0

Thinker-Maker/剑指offer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
JZ35.cpp 1.27 KB
一键复制 编辑 原始数据 按行查看 历史
Thinker-Maker 提交于 2024-01-07 12:05 . 复杂链表的复制
/*
struct RandomListNode {
int label;
struct RandomListNode *next, *random;
RandomListNode(int x) :
label(x), next(NULL), random(NULL) {
}
};
*/
class Solution {
public:
/*
插入节点法:
pass1: insert;
pass2: copy;
pass3: split linkedlist
*/
RandomListNode* Clone(RandomListNode* pHead) {
if(!pHead){
return nullptr;
}
typedef RandomListNode ListNode;
ListNode *newhead = nullptr;
ListNode *tail = nullptr;
ListNode *cur = pHead;
while(cur){
ListNode *node = new ListNode(cur->label);
node->next = cur->next;
cur->next = node;
cur = node->next;
}
cur = pHead;
while(cur){
ListNode *copy = cur->next;
copy->random = cur->random ? cur->random->next : nullptr;
cur = copy->next;
}
cur = pHead;
while(cur){
if(!newhead){
newhead = tail = cur->next;
}else{
tail->next = cur->next;
tail = tail->next;
}
cur->next = tail->next;
tail->next = nullptr;
cur = cur->next;
}
return newhead;
}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cpualuc/sword_offer.git
[email protected]:cpualuc/sword_offer.git
cpualuc
sword_offer
剑指offer
main

搜索帮助