Easy!
題目描述:
給定一個排序鏈表,刪除所有重復的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2 輸出: 1->2
示例 2:
輸入: 1->1->2->3->3 輸出: 1->2->3
解題思路:
移除有序鏈表中的重復項需要定義個指針指向該鏈表的第一個元素,然后第一個元素和第二個元素比較,如果重復了,則刪掉第二個元素,如果不重復,指針指向第二個元素。這樣遍歷完整個鏈表,則剩下的元素沒有重復項。
C++解法一:
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode *deleteDuplicates(ListNode *head) { 12 if (!head || !head->next) return head; 13 14 ListNode *start = head; 15 while (start && start->next) { 16 if (start->val == start->next->val) { 17 ListNode *tmp = start->next; 18 start->next = start->next->next; 19 delete tmp; 20 } else start = start->next; 21 } 22 return head; 23 } 24 };