[LeetCode_83] Remove Duplicates from Sorted List_刪除排序連結串列中的重複元素
阿新 • • 發佈:2018-12-21
leetcode_83
題目描述
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1: Input: 1->1->2 Output: 1->2 Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
思路:
就是一個單純的定義兩個指標分別為p和q,指標q作為標記p的下一個節點,如果p的下一個節點和它相等,將p的指標指向p的下一個的下一個節點,free掉q
程式碼:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *p = head, *q;
while(p && p->next) {
q = p->next;
if(p->val == p->next->val) {
p->next = q->next;
free(q);
} else p = p->next;
//一定要寫上else,否則假如有三個一樣的數字【eg:111】時,最後一個不會被判斷
}
return head;
}