1. 程式人生 > >[LeetCode_83] Remove Duplicates from Sorted List_刪除排序連結串列中的重複元素

[LeetCode_83] Remove Duplicates from Sorted List_刪除排序連結串列中的重複元素

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; }