当前位置:网站首页>Leetcode (Sword finger offer) - 35 Replication of complex linked list
Leetcode (Sword finger offer) - 35 Replication of complex linked list
2022-07-04 09:20:00 【Programmer Mu code】
Topic link : Click to open the link
The main idea of the topic : A little .
Their thinking : Solution (2) analysis .


Related enterprises
- Bytes to beat
- Amazon (Amazon)
- Microsoft (Microsoft)
- Bloomberg (Bloomberg)
- Google (Google)
- Shopee
- VMware
AC Code
- Java
/* // Definition for a Node. class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; } } */
// Solution (1)
class Solution {
public Node copyRandomList(Node head) {
Node node = head;
Map<Node, Node> map = new HashMap<>();
while (null != node) {
map.put(node, new Node(node.val));
node = node.next;
}
node = head;
while (null != node) {
Node tmp = map.get(node);
tmp.next = map.get(node.next);
tmp.random = map.get(node.random);
node = node.next;
}
return map.get(head);
}
}
// Solution (2)
class Solution {
public Node copyRandomList(Node head) {
if(head == null) return null;
Node cur = head;
// 1. Copy each node , And build a splicing linked list
while(cur != null) {
Node tmp = new Node(cur.val);
tmp.next = cur.next;
cur.next = tmp;
cur = tmp.next;
}
// 2. Build the of each new node random Point to
cur = head;
while(cur != null) {
if(cur.random != null)
cur.next.random = cur.random.next;
cur = cur.next.next;
}
// 3. Split two linked lists
cur = head.next;
Node pre = head, res = head.next;
while(cur.next != null) {
pre.next = pre.next.next;
cur.next = cur.next.next;
pre = pre.next;
cur = cur.next;
}
pre.next = null; // Handle the original end node of the linked list separately
return res; // Return the new chain header node
}
}- C++
// Solution (1)
class Solution {
public:
Node* copyRandomList(Node* head) {
if(head == nullptr) return nullptr;
Node* cur = head;
unordered_map<Node*, Node*> map;
// 3. Copy each node , And establish “ Original node -> New node ” Of Map mapping
while(cur != nullptr) {
map[cur] = new Node(cur->val);
cur = cur->next;
}
cur = head;
// 4. To build a new linked list next and random Point to
while(cur != nullptr) {
map[cur]->next = map[cur->next];
map[cur]->random = map[cur->random];
cur = cur->next;
}
// 5. Return the head node of the new linked list
return map[head];
}
};
// Solution (2)
class Solution {
public:
Node* copyRandomList(Node* head) {
if(head == nullptr) return nullptr;
Node* cur = head;
// 1. Copy each node , And build a splicing linked list
while(cur != nullptr) {
Node* tmp = new Node(cur->val);
tmp->next = cur->next;
cur->next = tmp;
cur = tmp->next;
}
// 2. Build the of each new node random Point to
cur = head;
while(cur != nullptr) {
if(cur->random != nullptr)
cur->next->random = cur->random->next;
cur = cur->next->next;
}
// 3. Split two linked lists
cur = head->next;
Node* pre = head, *res = head->next;
while(cur->next != nullptr) {
pre->next = pre->next->next;
cur->next = cur->next->next;
pre = pre->next;
cur = cur->next;
}
pre->next = nullptr; // Handle the original end node of the linked list separately
return res; // Return the new chain header node
}
};边栏推荐
- Basic data types in golang
- Awk from entry to earth (18) GAW K line manual
- What is permission? What is a role? What are users?
- Codeforces Round #803 (Div. 2)(A-D)
- 165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
- [untitled] forwarding least square method
- Explain TCP protocol in detail three handshakes and four waves
- After unplugging the network cable, does the original TCP connection still exist?
- Codeforces Round #793 (Div. 2)(A-D)
- Function comparison between cs5261 and ag9310 demoboard test board | cost advantage of cs5261 replacing ange ag9310
猜你喜欢

Sword finger offer 30 contains the stack of Min function

After unplugging the network cable, does the original TCP connection still exist?

26. Delete duplicates in the ordered array (fast and slow pointer de duplication)

How do microservices aggregate API documents? This wave of show~

C language - Introduction - Foundation - syntax - data type (4)

Logstack configuration details -- elasticstack (elk) work notes 020

AMLOGIC gsensor debugging
](/img/3f/4d8f4c77d9fde5dd3f53ef890ecfa8.png)
C语言-入门-基础-语法-[运算符,类型转换](六)

CLion-控制台输出中文乱码
](/img/5a/c6a3c5cd8038d17c5b0ead2ad52764.png)
C语言-入门-基础-语法-[主函数,头文件](二)
随机推荐
Reading notes of how the network is connected - understanding the basic concepts of the network (I)
HMS core helps baby bus show high-quality children's digital content to global developers
Global and Chinese market of sampler 2022-2028: Research Report on technology, participants, trends, market size and share
Awk from entry to earth (18) GAW K line manual
Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
Explanation of closures in golang
Reading notes on how to connect the network - hubs, routers and routers (III)
C language - Introduction - Foundation - syntax - [operators, type conversion] (6)
2022-2028 global optical transparency industry research and trend analysis report
The 14th five year plan and investment risk analysis report of China's hydrogen fluoride industry 2022 ~ 2028
2022-2028 global gasket metal plate heat exchanger industry research and trend analysis report
Awk from getting started to digging in (4) user defined variables
Langage C - démarrer - base - syntaxe - [opérateur, conversion de type] (vi)
After unplugging the network cable, does the original TCP connection still exist?
2022-2028 global elastic strain sensor industry research and trend analysis report
Awk from entry to earth (8) array
Dynamic analysis and development prospect prediction report of high purity manganese dioxide in the world and China Ⓡ 2022 ~ 2027
Use Alibaba cloud NPM image acceleration
What is permission? What is a role? What are users?
C语言-入门-基础-语法-[运算符,类型转换](六)