1. 程式人生 > >[leetcode]83. Remove Duplicates from Sorted List

[leetcode]83. Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.

Example 1:

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

分析:

刪除排好序的連結串列中重複的項。若連結串列為空或者只有一個元素,直接返回;否則定義一個結點,從頭開始遍歷,依次比較相鄰結點的值,若相等,刪除其中一個結點即可;否則跳到下一結點,繼續比較。
 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head || !head->next)
            return head;
        ListNode* h1 = head;//定義指標指向第一個元素
        while(h1 && h1->next)
        {
            if(h1->val == h1->next->val)
            {
                ListNode* tmp = h1->next;
                h1->next = h1->next->next;
                delete tmp;
            }
            else
                h1 = h1->next;
        }
       return head; 
    }
};