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

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

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

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

 思路: 用双指针进行遍历,如果连续的两次有相同的值,用n来记住这个值,然后遍历链表将此值对应的所有的节点都删掉。第一次没有编译出来,还是参考了答案,但是答案代码一读就懂了,自己咋没想到呢,惭愧。
 *
 *
 * @param head ListNode类
 * @return ListNode类
 */
struct ListNode* deleteDuplicates(struct ListNode* head ) {

    if (head == NULL)
        return head;
    struct ListNode* H = malloc(sizeof(struct ListNode));
    H->next = head;
    struct ListNode* cur = H;
    while (cur->next->next != NULL && cur->next != NULL) {
        if (cur->next->val == cur->next->next->val) {
            int n = cur->next->val;
            while (n == cur->next->val && cur->next != NULL) {
                cur->next = cur->next->next;
            }
        } else {
            cur = cur->next;
        }
    }
    return H->next;
}

全部评论

相关推荐

01-18 09:26
已编辑
门头沟学院 Java
王桑的大offer:建议中间件那块写熟悉即可,写掌握 面试包被拷打到昏厥
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务