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

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

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

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param head ListNode类
 * @return ListNode类
 */
struct ListNode* deleteDuplicates(struct ListNode* head ) {
    // write code here
    struct ListNode* temp = NULL;
    struct ListNode* last = temp;	//新链表的初始化
    struct ListNode* p = head;
    struct ListNode* q = NULL;
    if (head == NULL || head->next == NULL)		//特殊情况
        return head;
    q = p;
    p = p->next;
    int data;
    while (p) 
    {
        if (q->val == p->val) 		//相同时
        {
            while (1) 
            {
                if (p->val != q->val) 
                {
                    q->next = NULL;
                    q = p;
                    p = p->next;
                    if (p == NULL)      //当最后一个结点为不同时出现的情况
                    {
                        if (temp == NULL) 
                        {
                            temp = q;
                            last = q;
                        } 
                        else 
                        {
                            last->next = q;
                            last = q;
                        }
                    }
                    break;
                } 
                else 
                {
                    q = p;
                    p = p->next;
                    if (p == NULL)  //q跟随p结点直至p为空时,它们依旧相等的情况
                        break;
                }
            }
        } 
        else 		//不同时
        {
            q->next = NULL;
            if (temp == NULL) 
            {
                temp = q;
                last = q;
            } 
            else 
            {
                last->next = q;
                last = q;
            }
            q = p;
            p = p->next;
            if (p == NULL) 
            {
                last->next = q;
                last = q;
            }
        }
    }
    return temp;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务