LeetCode 复制带随机指针的链表
2024-10-07 18:31:17
题目链接:https://leetcode-cn.com/problems/copy-list-with-random-pointer/
题目大意
略。
分析
空间复杂度 O(1) 的做法非常开拓思维。
代码如下
/*
// Definition for a Node.
class Node {
public:
int val;
Node* next;
Node* random; Node() {} Node(int _val, Node* _next, Node* _random) {
val = _val;
next = _next;
random = _random;
}
};
*/
class Solution {
public:
Node* copyRandomList(Node* head) {
if(head == NULL) return NULL; Node *p1 = head, *p2, *newhead; // 在原链表中交替嵌入新节点
while(p1 != NULL) {
Node *t = new Node(); t->next = p1->next;
t->val = p1->val;
p1->next = t;
p1 = t->next;
} newhead = head->next;
p1 = head;
p2 = newhead;
// 拷贝random
while() {
if(p1->random == NULL) p2->random = NULL;
else p2->random = p1->random->next;
p1 = p2->next;
if(p1 == NULL) break;
p2 = p1->next;
} p1 = head;
p2 = newhead;
// 分离
while() {
p1 = p1->next = p2->next;
if(p1 == NULL) break;
p2 = p2->next = p1->next;
}
return newhead;
}
};
最新文章
- springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪
- AccountName LoginName 变更
- CSS基础转载
- xsd与xsl文件的区别
- 查单神器v1.0 升级 →B站看鬼畜神器v1.0
- LinearLayout 控件
- Windows程序设计-窗口和消息
- Spring EL Lists, Maps example
- IOS开发UI篇之──自定义UIActionSheet
- ios NSHashTable &; NSMapTable
- android学习——ADT的离线安装
- BZOJ 3992 序列统计
- ural 1180 Stone Game
- opencv是什么
- baidu 200兆SVN代码服务器
- 多个dropdownlist只有第一个能选中,其他选不中之我见
- setTimeout小总结
- ionic实战系列(二):使用cordova插件
- 使用图片地图减少HTTP请求数量
- ubuntu1604使用源码方式安装ruby2.5.0