当前位置:网站首页>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 discipline formula and unit conversion
- 《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)
- C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
- Explain TCP protocol in detail three handshakes and four waves
- 2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
- [error record] no matching function for call to 'cacheflush' cacheflush();)
- CLion-控制台输出中文乱码
- Reading notes on how to connect the network - tcp/ip connection (II)
- Codeforces Round #803 (Div. 2)(A-D)
- You can see the employment prospects of PMP project management
猜你喜欢

Codeforces Round #750 (Div. 2)(A,B,C,D,F1)

How should PMP learning ideas be realized?

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

How to batch change file extensions in win10

Codeforces Round #803 (Div. 2)(A-D)

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

Explain TCP protocol in detail three handshakes and four waves

Relationship and operation of random events

2022-2028 global industrial gasket plate heat exchanger industry research and trend analysis report

Mac platform forgets the root password of MySQL
随机推荐
《网络是怎么样连接的》读书笔记 - Tcp/IP连接(二)
地平线 旭日X3 PI (一)首次开机细节
The map set type is stored in the form of key value pairs, and the iterative traversal is faster than the list set
Dede plug-in (multi-function integration)
Mac platform forgets the root password of MySQL
At the age of 30, I changed to Hongmeng with a high salary because I did these three things
Awk from entry to earth (14) awk output redirection
随机事件的关系与运算
上周热点回顾(6.27-7.3)
Function comparison between cs5261 and ag9310 demoboard test board | cost advantage of cs5261 replacing ange ag9310
保姆级JDEC增删改查练习
AMLOGIC gsensor debugging
什么是权限?什么是角色?什么是用户?
Leetcode topic [array] - 121 - the best time to buy and sell stocks
Opencv environment construction (I)
Educational Codeforces Round 115 (Rated for Div. 2)
How to batch change file extensions in win10
Mantis creates users without password options
In depth research and investment strategy report on China's hydraulic parts industry (2022 Edition)
GoLand environment variable configuration