首页 > 其他分享 >4/21 力扣 82. 删除排序链表中的重复元素 II

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

时间:2023-04-21 13:00:55浏览次数:45  
标签:力扣 head ListNode 21 next 链表 节点 struct

给定一个已排序的链表的头 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
题目数据保证链表已经按升序 排列

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     struct ListNode *next;  * };  */

struct ListNode* deleteDuplicates(struct ListNode* head){}
struct ListNode* deleteDuplicates(struct ListNode* head) {
    // 创建一个虚拟头节点
    struct ListNode *dummy = malloc(sizeof(struct ListNode));
    dummy->next = head;
    // prev 指向当前不重复节点的前驱节点
    struct ListNode *prev = dummy;
    // 遍历链表
    while (head && head->next) {
        // 如果当前节点和下一个节点的值相同
        if (head->val == head->next->val) {
            // 继续向后遍历,直到找到第一个不同的节点
            while (head->next && head->val == head->next->val) {
                head = head->next;
            }
            // 将前驱节点的 next 指针指向这个不同的节点,从而删除所有重复的节点
            prev->next = head->next;
        } else {
            // 如果当前节点和下一个节点的值不同,更新 prev 指针
            prev = prev->next;
        }
        // 继续遍历下一个节点
        head = head->next;
    }
    // 返回虚拟头节点的 next 指针
    return dummy->next;
}

 

标签:力扣,head,ListNode,21,next,链表,节点,struct
From: https://www.cnblogs.com/wlxdaydayup/p/17339973.html

相关文章

  • 编程一小时2023.4.21
    1.classCar:publicVehicle{public:Car(stringno,intguest,intweight):Vehicle(no){m_no=no;m_guest=guest;m_weight=weight;}virtualintfee(){return(m_guest*8+m_weight*2);}private:stringm_no;intm_guest,m_weight;};classTruck:publicVehicle{public:Truck(......
  • 51nod 1212 无向图最小生成树(最小生成树)
    1212 无向图最小生成树基准时间限制:1 秒空间限制:131072 KB分值: 0 难度:基础题 收藏 关注Input第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000)第2 - M + 1行:每行......
  • 删除链表的倒数第 N 个结点
    删除链表的倒数第N个节点19.删除链表的倒数第N个结点-力扣(LeetCode)给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]Python解:#Definitionforsingly-linkedlist.#classListNode(object):#......
  • 链表相交
    链表相交面试题02.07.链表相交-力扣(LeetCode)给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保......
  • 【2023.04.21】幸运的猫(上)
    此文用来记录我家黑猫旺来出生和黑猫的初见是在19年的9月份,那时的我暑假留校后,给自己留了两周的假期回家这个暑假我周游了整个福大,拍了可能有二三十只流浪猫吧,认识了学校的所有流浪猫但是这只黑猫反而是我返校第一次见,开学后学校人多,加上我事情比较多,因此只匆匆拍了几张照片......
  • 2023年4月21日-关于远程feign调用实现文件上传下载
    一、客户需求:做一个查询程序,客户提供一个excel模板,将查询结果保存到excel模板中,上传到文件服务,供客户下载使用。二、代码实现//服务A,文件上传@ApiOperation("上传文件-demo")@PostMapping(value="/uploadDemo/{busType}/{billId}")publicResBeanuploadFile(@PathVariabl......
  • 2023年4月21日08:29:28
    昨天学了一天怎么去写博客,进度什么的比较慢,但是我的收获很大,看懂了很多以前没有看懂的东西,很高兴。今天先把材料写好,然后再开始学习博客,争取在星期天的的00:00之前把博客写完。学博客的时候,要去理解,自己不要沉溺在刷课的快感中,你要真正学到 东西才是最重要的。理解它们跑的逻辑......
  • leetcode-876链表的中间节点
    找链表的中间节点思路心得当不知道while的终止条件时,可以先写while(true),然后在循环体中写终止条件,这样写的好处是可以暂时不考虑终止条件,使思路更清晰;坏处是这样有时候会使循环体的内容很混乱要注意分类!本题中把情况分为节点个数是奇数和偶数去分析,最终找到统一的......
  • leetcode-234回文链表
    回文链表方法一:借助数组进行判断把节点的值复制到一个数组中再利用数组进行判断,但是这样需要占用额外的空间/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*......
  • SDUTOJ 2128 树结构练习——排序二叉树的中序遍历
    树结构练习——排序二叉树的中序遍历TimeLimit:1000MSMemorylimit:65536K题目描述在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值(2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值(3).任意一个节......