【leetcode面试经典150题】64. 删除排序链表中的重复元素 II(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)

【题目描述】

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

【示例一】

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

【示例二】

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

【提示及数据范围】

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

【代码】

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (!head) {
            return head;
        }
        
        ListNode* dummy = new ListNode(0, head);

        ListNode* cur = dummy;
        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->next = cur->next->next;
                }
            }
            else {
                cur = cur->next;
            }
        }

        return dummy->next;
    }
};

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 14:16:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 14:16:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 14:16:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 14:16:02       18 阅读

热门阅读

  1. Debian常用命令

    2024-04-25 14:16:02       16 阅读
  2. 实时交互新篇章:WebSocket在Flutter中的应用与实践

    2024-04-25 14:16:02       15 阅读
  3. Android retrofit使用模板

    2024-04-25 14:16:02       40 阅读
  4. Qt相关开源项目总结

    2024-04-25 14:16:02       13 阅读
  5. QT5.12.12配置MSVC2017编译器环境

    2024-04-25 14:16:02       21 阅读
  6. Qt: windows下关闭系统窗体

    2024-04-25 14:16:02       16 阅读
  7. springBoot Event实现异步消费机制

    2024-04-25 14:16:02       42 阅读
  8. 富格林:警觉诱导黑幕避免亏损

    2024-04-25 14:16:02       14 阅读
  9. mybatis-plus 动态表名简易使用

    2024-04-25 14:16:02       13 阅读