1. 程式人生 > >leetcode83. Remove Duplicates from Sorted List(刪除有序連結串列中的重複項)

leetcode83. Remove Duplicates from Sorted List(刪除有序連結串列中的重複項)

題目要求

給定一個排好順序的連結串列,刪除連結串列中的重複項。

例子

Example 1:

Input: 1->1->2
Output: 1->2

Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

解題思路

和解決有序陣列中刪除重複元素leetcode 26 有序數刪除組中的重複元素的思路相似,通過遍歷比較連結串列中相鄰元素的值,若重複,則當前元素的next指向下一節點的next.
(p->next = p->next->next) 理解起來是這樣


在操作中,因為要刪除並釋放重複節點,所以也需要一個指標(nex)來存放記錄重複節點的位置,即nex = p->next。

主要程式碼c++

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode *cur =head, *nex;
        while(cur && cur->next) // 連結串列為空,或者裡那表末尾時結束(避免再寫if判斷空表)
        {
            if(cur->val ==
cur->next->val) // 比較相鄰元素的值 { nex = cur->next; delete cur->next; //很多解答直接跳到下一節點,而不釋放節點 cur->next = nex->next; } else{cur = cur->next;} } return head; } };

原題連結 :https://leetcode.com/problems/remove-duplicates-from-sorted-list/