AcWing 29. 删除链表中重复的节点

查询链表是否有重合节点 <br />和同事讨论了一下,有好几种方法是可行的:<br />1. 算出两个的<br />2. 将链表A走完,末尾指向的B的头节点<br />3. 将A链表倒转,然后走B链表,如果B链表的最后一个节点是A链表之前的头节点,则表示重合。<br />4. 用Hashtable来存储A链表,然后走B链表,来判断hashtable里面是否有重复节点存在。<br />public Node GetFirstDuplicateNode(Node a, Node b) { i 阅读详情

这个问题有很多种解法。最直观简单的就是建立映射用以统计每个结点的出现次数,最后根据结果重构链表。这里介绍一种空间复杂度为O(1)的方法。

具体代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplication(ListNode* head) {
        ListNode *tp = new ListNode(-1); //临时头结点,这样可以将头结点的删除操作与其他结点的统一
        tp -> next = head;
        ListNode *p = tp;
        while (p -> next) {
            ListNode *q = p -> next;
            while (q && p -> next -> val == q -> val) q = q -> next; //检测到重复结点
            //判断p的连接方式
            if (p -> next && p -> next -> next == q) p = p -> next; //若没有重复结点则直接后移一位
            else p -> next = q; //否则直接连接到q上过滤掉所有重复结点
        }
        return tp -> next;
    }
};

 

WRFDA如何读取风云四号A 星的GIIRS数据? 🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。 阅读详情

相关推荐

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 283

链表重复元素的统计

有三个非递减的链表,要求将重复的元素重新置于a链表中,并且其复杂度为O(n+M+P)#include  #include  using namespace std;void main(){    int a[10]={1,7,8,8,9,9,11,14,15,19};    int b[8]={0,1,5,7,11,15,15,19};    int c

yuwei19840916的专栏 1037

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1407

LeetCode——链表重复元素问题、重排链表

重排链表 对一个链表,先找到后半部门的链表将其反转,然后将后半部分插入到前前半部分中,隔一个插入一个。 输入: head = [1,2,3,4] 输出: [1,4,2,3] 输入: head = [1,2,3,4,5] 输出: [1,5,2,4,3] (1)用双指针找到链表的中点 (2)将后半部门利用链表反转,进行反转 (3)然后将两个链表交替进行插入 两个链表进行交替插入 public void merger(ListNode l1,ListNode l2){ ListNode l1_temp;

your_棒棒糖的博客 815

【python三维深度学习】python三维点云从基础到深度学习

从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。

叶子的博客 2万+

GEE:提取研究区 NDVI/LST/RVI 并进行时间序列线性插值填补缺失像素和Savitsky-Golay(SG)滤波平滑处理

养乐多_本文将介绍使用Landsat数据集,构建时间序列,并使用线性插值算法填补缺失数据,或者去云空洞,并进一步对完整的时间序列数据进行SG滤波处理。

养乐多的博客 3196

剑指offer系列之55:删除链表汇总重复的节点

问题描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:这个链表是排序的,需要找到重复的节点,所以对链表进行遍历,而且在遍历的过程中需要对每个当前遍历的节点以及后面的节点进行比较直到遇到下一个节点不与当前节点重复。如果下一个节点与当前遍历的节点不重复,则继续遍历,直到把

ly_main的博客 451

Cesium中级开发教程之二十二:视锥体

教程示例网站:https://thomaz529.github.io。

883

AcWing 29. 删除链表中重复的节点

AcWing 29. 删除链表中重复的节点 写在前面:AcWing是由北大一神级人物——“大雪菜” 创办的算法交流社区, 里面除了正常 oj 网站的功能之外, 还提供单人训练、双人匹配、云端操作系统等模式,除此之外不定期举行各种打卡活动,而且可以分享题解和心得,完全可以当成空间来玩。欢迎大家入坑。 点击前往:AcWing 原题链接 大佬视频讲解传送门 题目描述 在一个排序的链表中,存在重复的...

Ember_Sky 275

嵌入式Zephyr RTOS面试题及参考答案

在Zephyr中,为自定义外设编写Devicetree绑定(Bindings)有助于内核理解设备树中自定义外设节点的含义和属性。首先,需要创建一个.yaml格式的绑定文件,通常存放在目录下对应的子目录中,文件名应能反映外设的类型和功能。绑定文件的开头要定义基本信息,包括字段,用于简要描述外设的功能和用途;compatible字段,它是一个字符串列表,用于匹配设备树中自定义外设节点的compatible属性,设备树节点和绑定文件通过这个字段关联起来。接下来,要定义外设节点的属性。使用properties。

大模型大数据攻城狮的专栏 986

【产品经理修炼之道】- 基金产品-“TA系统 ”

TA:Transfer Agent 缩写,通常称成“登记过户”。开放式基金登记过户(TA)系统是基金的登记过户系统。其功能涵盖了基金交易业务的各个环节,包括账户业务处理,如投资者开户、修改账户资料、挂失/解挂等;日常交易业务处理,如认购、申购(一般申购和定期定额)、赎回(一般赎回、指定赎回、预约赎回等)、转托管、基金转换等;特殊业务处理,如非交易过户、账户冻结/解冻等;分红业务处理,如现金分红和红利再投资。

xiaoli8748的专栏 1677

AcWing 29. 删除链表中重复的节点

文章目录AcWing 29. 删除链表中重复的节点AC代码 AcWing 29. 删除链表中重复的节点 本题链接:AcWing 29. 删除链表中重复的节点 本博客给出本题截图: AC代码 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };.

佛系更新 536

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

AcWing 29 删除链表中重复的节点

题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 样例1 输入:1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5 输出:1-&gt;2-&gt;5 样例2 输入:1-&gt;1-&gt;1-&gt;2-&gt;3 输出:2-&gt;3 分析: 本题与一般去重不同之处是:对于重复的元素,一个不留。于是很可...

昂昂累世士的博客 220

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

AcWing 29:删除链表中重复的节点

在本例中,链表已经确定且结点值已排序。由于首元结点 head 的值可能重复,故新建一个结点 L 指向首元结点 head。

hnjzsyjyj的专栏 396

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【ACWing】29. 删除链表中重复的节点

题目地址: https://www.acwing.com/problem/content/27/ 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 每次先走到等于当前节点数值的节点中的最后一个,如果当前就是最后一个,则说明没有重复,直接append到后面,否则不append。代码如下: #include <iostream> using namespace std; struct ListNode { int val; ListNode *nex

数学、算法爱好者的博客 244

剑指 offer acwing 29 删除链表中重复的节点

题面 题解 对于可能删除头节点的链表,我们一般先定义一个虚拟的头节点来处理边界问题 然后从前往后扫描整个链表,每次扫描元素相同的一段,如果这段中的元素个数多于1个,则将整段元素直接删除。 O(n) 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL)

qq_44791484的博客 180

acwing 29. 删除链表中重复的节点

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* de...

到处遛鸟刑警 167

Acwing第29题(删除链表中重复的节点)

相关题目: https://www.acwing.com/problem/content/27/http://删除链表中重复的节点 解题思路: 双指针法,具体实现可见y总的解题思路。 相关代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}

正在学算法的小朋友的博客 389

ACWING29. 删除链表中重复的节点(剑指offer)

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 样例1 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2 输入:1->1->1->2->3 输出:2->3 思路: 注意是删掉重复的所有节点! /** * Definition for singly-linked...

tomjobs的博客 485

AcWing 29. 删除链表中重复的节点(C++)- 链表

题目链接:https://www.acwing.com/problem/content/27/ 题目如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* del

qq_40467670的博客 220

剑指Off打卡day36—— ACWing29. 删除链表中重复的节点

【题目描述】 29. 删除链表中重复的节点 【思路】 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode deleteDuplication(ListNode head) {

JohnnyLin 212

移除链表中的重复节点java_AcWing 29. 删除链表中重复的节点(Java)

class Solution {public ListNode deleteDuplication(ListNode head) {if(head==null || head.next==null){return head;}// 虚拟头结点ListNode dummy = new ListNode(-1);dummy.next = head;ListNode p = dummy;ListNode...

weixin_32349699的博客 175

20190601-剑指offer18.2-AcWing-29. 删除链表中重复的节点

剑指offer18.2-AcWing-29. 删除链表中重复的节点 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 样例1 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2 输入:1->1->1->2->3 输出:2->3 思路: 首先判断节点是否为空,若是空,...

WangXu__的博客 193
上一篇: AcWing 28. 在O(1)时间删除链表结点
下一篇: 912数据结构自学习题总结Part3
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值