题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

//问题出在如果最后两位一样
class Solution {
  public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode* nList = new ListNode(9999);
        nList->next = head;
        ListNode* Last = nList;
        ListNode* quick = head, * slow = nList;
        ListNode* temp;
        int sign = 0;
        if (head == NULL) {
            return NULL;
        }
        if (head->next == NULL)
            return head;

        while (quick->next != nullptr) {
            while (quick->val != quick->next->val) {

                quick = quick->next;
                slow = slow->next;
                if (quick->next == nullptr)
                    return nList->next;
            }
            while (quick->val == quick->next->val) {

                quick = quick->next;
                if (quick->next == nullptr) {
					slow->next=nullptr;
                    return nList->next;
                }
                sign = 1;
            }
            if (quick->val != quick->next->val && sign == 1) {

                slow->next = quick->next;
                quick = quick->next;
                sign = 0;
                if (quick->next == nullptr)
                    return nList->next;
            }
        }
        //if (slow->val == quick->val)
        //slow->next = NULL;
        return head;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务