刪除排序鍊錶中的重複元素

2021-10-01 03:49:33 字數 1543 閱讀 6172

題目:給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。

示例 1:

輸入: 1->1->2 輸出: 1->2

示例 2:

輸入: 1->1->2->3->3 輸出: 1->2->3

以下是leetcode**片段:

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

listnode front,behind;

//定義listnode型別的快慢指標;

front = head;

//兩個指標一開始都指向頭結點

behind = head;

while

(behind != null)

//如果快慢指標所指的val值不同,則將慢指標的next指向快指標所指的位置,並且慢指標改為front.next(移動慢指標front的位置);

else

} front.next = null;

return head;

}}

注:

對下面**做出解釋:

front.next = null;
如果最後乙個元素和倒數第二個元素相等,由於下列**語句

if

(front.val == behind.val)

導致最後倆個元素並沒有進行去重處理,致使最後結果輸出仍有重複元素(結尾兩個元素),所以,讓 front.next = null; 避免了上述沒有去重的現象;

即使結尾兩個資料不相等,次語句也不影響結果,也可以適用。

但此語句的新增,導致了需要在開頭對傳進來的鍊錶為null的情況另作處理,即**:

if

(head == null)

因為如果是空,則語句front.next = null;則報錯,原因是null不是結點型別,所以沒有next一說,所以也不存在 front.next = null。

下面是idea全部**:

public

class

deleteduplicates

}public

static listnode deleteduplicates

(listnode head)

listnode front,behind;

front = head;

behind = head;

while

(behind != null)

else

} front.next = null;

return head;

}}

刪除排序鍊錶中重複元素

示例 1 輸入 1 2 3 3 4 4 5 輸出 1 2 5 示例 2 輸入 1 1 1 2 3 輸出 2 3 照例使用三個指標來 struct listnode deleteduplicates struct listnode head else 沒有重複的就正常移動 示例 1 輸入 1 1 2 ...

刪除排序鍊錶中的重複元素

給定乙個排序鍊錶,刪除所有重複的元素每個元素只留下乙個。樣例 給出 1 1 2 null,返回 1 2 null 給出 1 1 2 3 3 null,返回 1 2 3 null 加乙個頭結點 鍊錶有序,找到不相等的時候,刪除中間結點 兩兩比較是否相同進行刪除 definition for listn...

刪除排序鍊錶中的重複元素

題目 刪除排序鍊錶中的重複元素。給定乙個排序鍊錶,刪除所有重複的元素每個元素只留下乙個。樣例 給出1 1 2 null,返回1 2 null 給出1 1 2 3 3 null,返回1 2 3 null 思路 該題所給的鍊錶是有序的鍊錶,這大大降低了該題的難度,所以只要再定義乙個指標p,固定head,...