Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我们长的像是我们的错吗?

我们长的像是我们的错吗?

作者头像
公众号袁厨的算法小屋
发布于 2020-11-25 01:42:44
发布于 2020-11-25 01:42:44
34600
代码可运行
举报
运行总次数:0
代码可运行

来都来了点个关注呗

题目:删除链表中重复元素2

题目描述

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: 1->2->3->3->4->4->5
输出: 1->2->5

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: 1->1->1->2->3
输出: 2->3

注意这里会将重复的值全部删除,1,1,2,3最后只会保留2,3。

这道题目还是很简单的,更多的是考察大家的代码完整性,删除节点也是题库中的一类题目,我们可以可以通过这个题目举一反三。去完成其他删除阶段的题目。

链表的题目建议大家能有指针实现还是尽量用指针实现,很多链表题目都可以利用辅助空间实现,我们也可以用,学会了那种方法的同时应该再想一下可不可以利用指针来完成。下面我们来思考一下这个题目如何用指针实现吧!

双指针法:

做题思路:

这个题目也是利用我们的双指针思想,一个走在前面,一个在后面紧跟,前面的指针就好比是侦察兵,当发现重复节点时,后面指针停止移动,侦察兵继续移动,直到移动完重复节点,然后将该节点赋值给后节点。思路是不是很简单啊,那么我们来看一下动图模拟吧。

注:这里为了表达更直观,所以仅显示了该链表中存在的节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
       //特殊情况
        if(head == null||head.next==null){
            return head;
        }
       //定义指针
        ListNode pre = head;
        ListNode low =new ListNode(0);
        low.next=pre;
        ListNode ret = new ListNode(-1);
        ret=low;
        //循环遍历
        while(pre!=null&&pre.next!=null){
           //发现重复元素
            if(pre.val == pre.next.val){
               //不断移动前指针,直到到达最后一个重复节点
                while(pre!=null&&pre.next!=null&&pre.val == pre.next.val){
                    System.out.println(pre.val);
                    pre=pre.next;
                }
               //再移动一下前指针,因为while语句是到达最后一个重复节点            
               //再移动一步到达新节点
                pre = pre.next;
                low.next = pre;                     
             }
             else{
                //不相同情况
                 pre=pre.next;
                 low=low.next;
             }
        }
     return ret.next;
    }
}

这个题目算是删除链表节点的经典题目了,大家记得打卡啊。

大家如果觉得这篇文章对大家有帮助的话,就请你将它转发给需要的人吧,顺便请大家点个关注在看吧,创作不易。你们的支持对我真的帮助很大,感谢各位支持!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 袁厨的算法小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
删除链表中重复的结点
例如,链表1->2->3->3->4->4->5 处-理后为 1->2->3->4->5
名字是乱打的
2022/05/13
2.1K0
(多图预警)7个例子,7个视频,一堆图片助你把双指针按的牢牢的
大家好,我是袁厨。就是那个酷爱做饭自己考取了厨师资格证的程序员,文章中喜欢放动图的袁厨。
公众号袁厨的算法小屋
2020/11/25
5290
(多图预警)7个例子,7个视频,一堆图片助你把双指针按的牢牢的
数据结构:链表
链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。
灰子学技术
2020/04/02
6330
七十一、去重交换排序链表、 求链表的中间结点
最近在重新梳理学算法的知识,本文为链表常见操作复习的总结文章,会讲解常见的链表题目实现思路及附上答案,这些题目在leetcode上对应的题号也有给出,好好学习算法吧~
润森
2022/08/17
4770
七十一、去重交换排序链表、 求链表的中间结点
golang刷leetcode 链表(2) 删除重复元素
输入: 1->3->2->3->5->4->4 输出: 1->3->2->5->4 示例 2:
golangLeetcode
2022/08/02
5130
漫谈递归-链表合并
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
早起的鸟儿有虫吃
2019/03/06
7100
漫谈递归-链表合并
2023年前端面试题汇总-数据结构(链表)
在计算机里,不保存在连续存储空间中,而每一个元素里都保存了到下一个元素的地址的数据结构,我们称之为链表(Linked List)。链表上的每一个元素又可以称它为节点(Node),而链表中第一个元素,称它为头节点(Head Node),最后一个元素称它为尾节点(Tail Node)。
越陌度阡
2023/06/10
1.2K0
2023年前端面试题汇总-数据结构(链表)
字节面试题 leetcode 83. 删除排序链表中的重复元素
今天给大家分享一道字节跳动的面试题,也就是 Leetcode 83. 删除排序链表中的重复元素,提供三种(递归、迭代(单指针、双指针))解题思路,供大家参考。
程序员小熊
2021/05/28
3750
字节面试题 leetcode 83. 删除排序链表中的重复元素
四种方法解决leetcode203. 移除链表元素
本文主要针对移除单链表中的元素,提供了四种解题思路,供大家参考,希望能对大家提供帮助。
程序员小熊
2021/05/28
3340
四种方法解决leetcode203. 移除链表元素
画解算法:19. 删除链表的倒数第N个节点
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
灵魂画师牧码
2019/06/27
5020
画解算法:19. 删除链表的倒数第N个节点
算法--链表相关套路
通常来说,链表的问题从概念上讲很简单,更多时单纯的考察编码能力,而不是设计和解决算法。
宇宙之一粟
2020/10/29
5110
算法--链表相关套路
LeetCode每日一题-6:k个一组翻转链表
你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
墨明棋妙27
2022/09/23
3260
删除排序链表中重复元素的方法
链表的操作非常常见,也是面试中经常会被问道的问题。对于链表重复元素的删除,有两个变体,现在总结如下。 链表代码如下:
冬天里的懒猫
2020/08/03
1.2K0
精益求精解LeetCode(82与83)
好久没有刷题与更文了,今天来一场LeetCode上面简单与中等题目多种方法刷题。
公众号guangcity
2019/09/20
7230
【Leetcode】82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
Leetcode名企之路
2018/10/25
6300
【Leetcode】82. 删除排序链表中的重复元素 II
LeetCode-19-删除链表的倒数第N个节点
两次遍历是一定能找到的,但是这样复杂度比较高,所以直接能想到的是使用双指针来进行操作,一次遍历即可完成
benym
2022/07/14
1660
链表算法面试问题?看我就够了!
单链表的操作算法是笔试面试中较为常见的题目。本文将着重介绍平时面试中常见的关于链表的应用题目。
五分钟学算法
2019/03/14
1.1K0
链表算法面试问题?看我就够了!
Leetcode链表题目总结
  最近刷了一些链表相关的题目,总结了下比较经典的题目。在leetcode中,官方给出的说明是malloc的内存不需要释放,所以代码中都没有free。但是在实际的编程中,我们要将申请的内存释放掉,同时把指针指向NULL,这是一种良好的习惯。
嵌入式与Linux那些事
2021/05/20
6160
Leetcode链表题目总结
Leetcode链表题目
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。
润森
2019/11/27
4120
Leetcode链表题目
【算法题解】 Day26 双指针
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
sidiot
2023/08/31
1910
【算法题解】 Day26 双指针
相关推荐
删除链表中重复的结点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档