【每日leetcode】删除排序链表中的重复元素 II

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 ——————————————————————————————————————语言:c++

/**
 * 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 == NULL || head->next == NULL) {
          
   
            return head;
        }
        ListNode *newHead = new ListNode(0);
        ListNode *first = newHead;
        ListNode *current = head;

        while(current != NULL) {
          
   
            if(current->next != NULL && current->val == current->next->val) {
          
   
                while(current->next != NULL && current->val == current->next->val) {
          
   
                    current = current->next;
                }
            }
            else {
          
   
                first->next = current;
                first = first->next;
            }
            current = current->next;
        }
        first->next = current;
        
        return newHead->next;
    }
};
经验分享 程序员 微信小程序 职场和发展