当前位置: 首页 > news >正文

删除排序链表中的重复节点II(C++解法)

题目

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

示例 1:

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

示例 2:

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

C++代码

#include <iostream>
using namespace std;//定义链表结构体
struct ListNode {int val;ListNode* next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode* next) : val(x), next(next) {}
};/*
* 删除排序链表中的重复节点问题
* 定义dummyNode哑节点和cur节点
* 判断cur->next和cur->next->next节点不为空
* while循环删除重复节点和节点本身
*/
ListNode* deleteDuplicates(ListNode* head) {if (!head) {return head;}ListNode* dummyNode = new ListNode(0, head);ListNode* cur = dummyNode;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;}}ListNode* ans = dummyNode->next;delete dummyNode;return ans;
}int main() {ListNode* n1 = new ListNode(1);ListNode* n2 = new ListNode(2);ListNode* n3 = new ListNode(3);ListNode* n4 = new ListNode(3);ListNode* n5 = new ListNode(4);ListNode* n6 = new ListNode(4);ListNode* n7 = new ListNode(5);n1->next = n2;n2->next = n3;n3->next = n4;n4->next = n5;n5->next = n6;n6->next = n7;n7->next = nullptr;ListNode* head = n1;ListNode* ans = deleteDuplicates(head);while (ans) {cout << ans->val << " ";ans = ans->next;}delete n1, n2, n3, n4, n5, n6, n7;return 0;
}

分析

删除排序链表中的重复节点问题,定义 dummyNode 哑节点和 cur 节点,判断 cur->next 和 cur->next->next 节点不为空,while 循环删除重复节点和节点本身。

问题

本来想加一个pre节点增加代码可读性,但是写出来超时了,不知道什么问题。

http://www.lryc.cn/news/214901.html

相关文章:

  • uniapp自定义tab切换css样式、uni-forms中input下拉等标签字体、过宽、溢出样式一系列调整(附加实战举例)
  • windows server 2016-IIS静态服务器-设置详细过程
  • 不一样的编程方式 —— 协程(设计原理与汇编实现)
  • Thinkphp6项目在虚拟机无法指向pulic的目录访问的方法
  • 数据结构(超详细讲解!!)第十八节 串(堆串)
  • idea集成测试插件替代postman
  • clusterprolifer go kegg msigdbr 富集分析应该使用哪个数据集,GO?KEGG?Hallmark?
  • Linux学习笔记1-入门
  • 怎样更有效的运营Etsy店铺?
  • Vue 项目中如何使用Bootstrap5(简单易懂)
  • k8s 资源预留
  • 微信小程序自定义弹窗阻止滑动冒泡catchtouchmove之后弹窗内部内容无法滑动
  • Linux 命令速查
  • 第22期 | GPTSecurity周报
  • JavaScript前端 console 控制台详细解析与代码实例
  • idea中启动多例项目配置
  • Activiti7流程结束监听事件中,抛出的异常无法被spring全局异常捕捉
  • Android 默认关闭自动旋转屏幕功能
  • 软文推广方案,媒介盒子分享
  • CSDN热榜分析6:将实时爬取的热榜数据导入sqlite
  • 2023年11月1日,Google全新域名来袭:.ing域名现已问世!
  • 【设计模式】第22节:行为型模式之“状态模式”
  • JavaSE21——ArrayList
  • 找质数(枚举 埃氏筛 线性筛)
  • 第十二章 ObjectScript 系统标志和限定符 (qspec) - 标志
  • 解决Windows Server 2012 由于没有远程桌面授权服务器可以提供需求可证
  • 上位机底部栏 UI如何设置
  • MySQL表的增删改查(基础)
  • uniapp书写顶部选项卡代码详细例子
  • 注册中心ZK、nameServer、eureka、Nacos介绍与对比