题解 | #删除有序链表中重复的元素-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
    int delData = 0;
    struct ListNode* dummy = malloc(sizeof(struct ListNode));
    struct ListNode* delTemp;
    struct ListNode* temp = head;
    struct ListNode* pPre = dummy;
    dummy->next = head;
    while(temp && temp->next)
    {   
        if (temp->val != temp->next->val)
        {
            temp = temp->next;
            pPre = pPre->next;
        }
        else
        {
            delData = temp->val;
            while(temp && temp->val == delData)
            {
                delTemp = temp;
                temp = temp->next;
                pPre->next = temp;
                free(delTemp);
            }
        };
    }
    return dummy->next;
}

虚拟头节点,防止原先头节点被删除。

全部评论

相关推荐

码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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