JZ56 刪除鍊錶中重複的結點

2021-10-24 12:31:40 字數 1469 閱讀 3080

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

建立兩個鍊錶list1list2list1指向不確定重不重複的結點。list2指向一直去和下乙個結點判斷的鍊錶

首先,需要對原鍊錶phead進行操作。因為我們不確定,第乙個結點或者後面的結點是否重複。如:1 1 1 2 2 2 3對第二步的探索,因此我們需要乙個空白結點用於確定重不重複結點的精確判斷。

listnode head = new listnode(0);

head.next = phead;

listnode list1 = head; // 用於新鍊錶產生

listnode list2 = head.next; // 指向原鍊錶第乙個結點開始迴圈。list2作為依次比較當前結點和下乙個結點的值是否相同。

如果相同,繼續指向下乙個結點

如果不同,用list1.next = list2.next暫時儲存當前不相同的結點資訊。因為不能保證後面那個資料是否相同。

如:1 1 1 2 2 2 3第一次迴圈結束在1和2中間位置。將ilst2的下乙個結點也就是第乙個2賦予list1的下乙個結點

第二次迴圈又檢查到,2又開始重複。

直到第n次迴圈,不產生重複,就將list1 = list1.next

/*

public class listnode }*/

public

class

solution

// 0 1 2 3 3 4 4 5

listnode head =

newlistnode(0

);head.next = phead;

listnode answer = head;

// 返回新煉表頭結點

// 新煉表和原鍊錶相差乙個,就好操作重複結點

listnode pre = head;

// 用於新鍊錶產生

// 1 1 1 1 1

listnode last = head.next;

// 指向原鍊錶第乙個結點

while

(last != null)

pre.next = last.next;

last = last.next;

}else

}// 因為之前自加了乙個,後面應該刪掉只加的乙個

return answer.next;

}}

JZ56 刪除鍊錶中重複的結點

題目描述 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 題解 1 需要乙個前置結點,用作刪除結點後連線之後的結點。2 遍歷結點,如果當前節點重複就一直往下走,直至走到不重複的結點,讓前置結點...

( )56 刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5。leetcode對應題目 83.刪除排序鍊錶中的重複元素 重複的節點保留乙個 題目解答 82.刪除排序鍊錶中的重複元素 ii 題目解答 總結 要...

56 刪除鍊錶中重複的結點

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 方法一 遞迴 public class listnode public class solution if phead.val phead.ne...