劍指offer系列之55 刪除鍊錶彙總重複的節點

2021-07-11 04:20:04 字數 584 閱讀 6864

問題描述:在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

思路:這個鍊錶是排序的,需要找到重複的節點,所以對鍊錶進行遍歷,而且在遍歷的過程中需要對每個當前遍歷的節點以及後面的節點進行比較直到遇到下乙個節點不與當前節點重複。如果下乙個節點與當前遍歷的節點不重複,則繼續遍歷,直到把整個鍊錶遍歷結束。具體節點的處理方式和前面反轉鍊錶非常像。

if(phead == null) return phead;

listnode firstnode = new listnode(-1);

firstnode.next = phead;

listnode prenode = firstnode;

listnode curnode = phead;

while(curnode != null && curnode.next != null)

prenode.next = curnode;

}else

}return firstnode.next;

劍指offer(55)刪除鍊錶中重複節點

19.3.10 題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 這題暴力即可 function listnode x function deleteduplication phead...

劍指offer系列之14 反轉鍊錶

題目描述 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出翻轉後鍊錶的頭節點。思路 在調整節點i的m pnext指標時,除了需要知道節點i本身,還需要節點i的前乙個節點h,因為需要把節點i的m pnext指向節點h,同時還需要乙個儲存i的乙個節點j,以防止鍊錶斷開,因此需要定義三個指標,分別指向...

劍指offer系列之十四 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路如下 在遍歷鍊錶上的每個節點的時候,就修改其指標,當遍歷到最後乙個結點的時候,整個鍊錶就反轉完成了。所以需要建立三個變數 乙個是當前遍歷的結點,乙個是遍歷結點的前乙個結點,還有乙個是當前遍歷結點的下乙個結點。基於這種思路可以寫出如下的實現 ...