目录
1.原题链接:
2.结点拆分:
代码实现:
3.提交结果:
4.读书分享:
1.原题链接:
138. 随机链表的复制
2.结点拆分:
①.拷贝各个结点,连接在原结点后面;
②.处理拷贝结点的random:
由图可知,每个拷贝结点都在原结点的后面,那拷贝结点的random结点是不是也在原结点random结点后面?
③.拆解出复制链表:
代码实现:
typedef struct Node Node;
struct Node* copyRandomList(struct Node* head) {if(head==NULL)return NULL;//拷贝结点并连接在原结点后面Node* cur=head;while(cur!=NULL){ Node* copy=(Node*)malloc(sizeof(Node));copy->next=NULL;copy->random=NULL;copy->val=cur->val;copy->next=cur->next;cur->next=copy;cur=cur->next->next;}//处理random结点cur=head;while(cur!=NULL){Node* copy=cur->next; if(cur->random==NULL)//当random结点为空时,特殊处理copy->random=NULL;elsecopy->random=cur->random->next;cur=cur->next->next;}//拆解复制链表cur=head;Node* copyHead=head->next;//保存复制链表的头结点while(cur!=NULL){Node* copy=cur->next;Node* next=copy->next;cur->next=next;if(next==NULL)//避免引发空指针问题copy->next=NULL;elsecopy->next=next->next; cur=next;}return copyHead;
}
3.提交结果:
4.读书分享:
《道德经·第四十八章》:
为学日益,为道日损。损之又损,以至于无为。
无为而无不为。
取天下常以无事,及其有事,不足以取天下。
解释:
追求学问天天增益,修行大道日益减损。减损而又减损,最后达到无为的境地。
能够做到无为,就会有所作为。
治理天下必须无所事事,如果经常有所事事,就不能治理天下了。