83:删除排序链表中的重复元素

    科技2025-07-07  14

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

    示例 1:

    输入: 1->1->2 输出: 1->2

    示例 2:

    输入: 1->1->2->3->3 输出: 1->2->3

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    想法一:

    当相邻两个元素相等时,p->next = p->next->next

    class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(!head||!head->next) return head; ListNode* p = head; while(p->next) { if(p->val==p->next->val) { p->next = p->next->next; continue; } p = p->next; } return head; } };
    想法二:递归

    当相等时,head变成右边的元素 不相等时,head->next为右边的元素

    class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(!head||!head->next) return head; if(head->val == head->next->val) head = deleteDuplicates(head->next); else head->next = deleteDuplicates(head->next); return head ; } };
    Processed: 0.010, SQL: 8