2024每日刷题(129)
Leetcode—138. 随机链表的复制
实现代码
/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head == nullptr) {return nullptr;}unordered_map<Node*, Node*> map;Node* cur = head;while(cur != nullptr) {Node* s = new Node(cur->val);map[cur] = s;cur = cur->next;}cur = head;while(cur != nullptr) {map[cur]->next = map[cur->next];map[cur]->random = map[cur->random];cur = cur->next;}return map[head];}
};
运行结果
递归实现
/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head == nullptr) {return nullptr;}if(const auto it = map.find(head); it != map.cend()) {return it->second;}Node* newNode = new Node(head->val);map[head] = newNode;newNode->random = copyRandomList(head->random);newNode->next = copyRandomList(head->next);return newNode;}
private:unordered_map<Node*, Node*> map;
};
运行结果
cend()
C++的if里面可以有分号
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!