题解 | #删除有序链表中重复的元素-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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:29
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务