C语言每日一题(44)删除排序链表中的重复元素 II

力扣 82 删除排序链表中的重复元素 II

题目描述

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。

示例 1:

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:

输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序 排列

思路分析

一次遍历即可,题目所给的链表已经升序排列好了,那如果有重复元素的话他一定是放在一起的,也就是连续的,所以我们从头结点和它的下一个开始,如果相等的话,我们就将后面的链表向前移动进行覆盖实现删除,直到两个不等时继续遍历到链表结束。

为了方便扫描所有结点的值,我们定义一个哨兵位,从哨兵位开始遍历,返回时指向哨兵位的下一位就是头结点了。

struct ListNode* deleteDuplicates(struct ListNode* head) {
    struct ListNode* dummy=(struct ListNode*)malloc(sizeof(struct ListNode));
    dummy->val=0;
    dummy->next=head;
    struct ListNode* cur=dummy;
    if(!head)
    {
        return head;
    }
    while(cur->next&&cur->next->next)//两者不为空
    {
        if(cur->next->val==cur->next->next->val)
        {
            int x=cur->next->val;//保留它们相等的值
            while(cur->next&&cur->next->val==x)//如果cur的下一个的值等于刚刚保留的x,就删,直到next的值不等于x就停下
            {
                cur->next=cur->next->next;//进行删除,将next的next赋给next实现覆盖删除
            }
        }
        else
        {
            cur=cur->next;
        }
    }
    struct ListNode* ans=dummy->next;
    free(dummy);//记得释放
    return ans;
}

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 23:42:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 23:42:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 23:42:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 23:42:05       18 阅读

热门阅读

  1. MVCC-

    2023-12-06 23:42:05       29 阅读
  2. 03.PostgreSQL常用索引与优化

    2023-12-06 23:42:05       28 阅读
  3. vue3.0 写法 格式

    2023-12-06 23:42:05       26 阅读
  4. TCP与UDP的区别

    2023-12-06 23:42:05       43 阅读
  5. 基于Boost::Beast模块的小型HTTP服务器编程

    2023-12-06 23:42:05       33 阅读
  6. Spark_spark参数配置优先级

    2023-12-06 23:42:05       39 阅读
  7. spark写入数据报错

    2023-12-06 23:42:05       36 阅读
  8. pymysql的基本用法

    2023-12-06 23:42:05       41 阅读
  9. 网络数据通信—ProtoBuf实现序列化和反序列化

    2023-12-06 23:42:05       37 阅读
  10. git小白初学习

    2023-12-06 23:42:05       29 阅读
  11. 让 OpenAI GPT4 出 10 道题测试其他开源大语言模型

    2023-12-06 23:42:05       23 阅读
  12. 什么是DDI?DDI的原理和作用是什么?一文看懂

    2023-12-06 23:42:05       35 阅读