1. 程式人生 > >牛客網刷題之複雜連結串列的複製

牛客網刷題之複雜連結串列的複製

題目描述:

這裡寫圖片描述

解題思路:

過程分為三步:
首先,遍歷連結串列,複製當前結點currentNode對應的結點cloneCurNode,並將cloneCurNode放置在currentNode的後面,這樣就形成一條包含原始鏈以及複製鏈的長鏈。

這裡寫圖片描述

然後,還需將原始鏈中指標的方向賦予複製鏈

這裡寫圖片描述

最後,將長鏈拆分,就得到原始鏈和複製鏈了。

這裡寫圖片描述

題解:

public RandomListNode Clone(RandomListNode pHead) {
            if(pHead == null){
                return null;
            }
            //複製結點
RandomListNode currentNode = pHead; while(currentNode != null){ RandomListNode cloneNode = new RandomListNode(currentNode.label); cloneNode.next = currentNode.next; currentNode.next = cloneNode; currentNode = cloneNode.next; } //複製指標指向
currentNode = pHead; while(currentNode != null){ RandomListNode cloneNode = currentNode.next; if(currentNode.random != null){ cloneNode.random = currentNode.random.next; } currentNode = cloneNode.next; } //拆分長鏈
currentNode = pHead; RandomListNode cloneHead = pHead.next; RandomListNode tempNode; while(currentNode.next != null){ tempNode = currentNode.next; currentNode.next = tempNode.next; currentNode = tempNode; } return cloneHead; }

ac結果:

這裡寫圖片描述