Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[LeetCode] 82. Remove Duplicates from Sorted List II

[LeetCode] 82. Remove Duplicates from Sorted List II

作者头像
用户1148830
发布于 2018-01-04 01:50:31
发布于 2018-01-04 01:50:31
7510
举报

【原题】 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2->3.

【解释】 给定一个已经排序的单链表,要求删除链表当中所有的重复结点。 【思路】 这里最坑的是leetcode上链表并不带有头结点的链表,结果导致要将待删除结点分为头结点和非头结点的判断,增加了很多不必要的操作。 要是有头结点世界该多美好啊! 还傻傻地做了很多判断,看到My accepted Java code的解法,有如醍醐灌顶,没有头结点不会自己造一个??? Mark一下。

代码语言:javascript
AI代码解释
复制
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head==null) return head;
        ListNode fakeHead=new ListNode(0);//新建一个头结点
        fakeHead.next=head;
        ListNode pre=fakeHead, cur=head;
        while(cur!=null){
            while(cur.next!=null&&cur.val==cur.next.val)
                cur=cur.next;
            if(pre.next==cur)//相邻元素没有重复
                pre=pre.next;
            else 
            pre.next=cur.next;
            cur=cur.next;
          }
        return fakeHead.next;
    }
}

除此之外可以使用递归的解法。 参考My Recursive Java Solution

代码语言:javascript
AI代码解释
复制
public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
            if(head==null) return head;
        if(head.next!=null&&head.next.val==head.val){
                while(head.next!=null&&head.next.val==head.val)//循环直到找到一个不重复的node
                    head=head.next;

            return deleteDuplicates(head.next);
        }
        else head.next=deleteDuplicates(head.next);//相邻无重复
        return head;
        }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年07月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode: 82. Remove Duplicates from Sorted List II
Problem # Given a sorted linked list, delete all nodes that have duplicate numbers, # leaving only distinct numbers from the original list. # # For example, # Given 1->2->3->3->4->4->5, return 1->2->5. # Given 1->1->1->2->3, return 2->3. AC class ListNo
JNingWei
2018/09/27
3070
LinkedList - 82. Remove Duplicates from Sorted List II
82. Remove Duplicates from Sorted List II
ppxai
2020/09/23
3640
【Leetcode】82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
Leetcode名企之路
2018/10/25
6730
【Leetcode】82. 删除排序链表中的重复元素 II
七十一、去重交换排序链表、 求链表的中间结点
最近在重新梳理学算法的知识,本文为链表常见操作复习的总结文章,会讲解常见的链表题目实现思路及附上答案,这些题目在leetcode上对应的题号也有给出,好好学习算法吧~
润森
2022/08/17
5330
七十一、去重交换排序链表、 求链表的中间结点
字节面试题 leetcode 83. 删除排序链表中的重复元素
今天给大家分享一道字节跳动的面试题,也就是 Leetcode 83. 删除排序链表中的重复元素,提供三种(递归、迭代(单指针、双指针))解题思路,供大家参考。
程序员小熊
2021/05/28
4240
字节面试题 leetcode 83. 删除排序链表中的重复元素
leetcode 83 Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
流川疯
2019/01/18
4350
Leetcode 82 Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2->3. 删除链表中重复出现的节点,和83题类似 http://blog.
triplebee
2018/01/12
5980
leetcode: 83. Remove Duplicates from Sorted List
Problem # Given a sorted linked list, delete all duplicates such that each element appear only once. # # For example, # Given 1->1->2, return 1->2. # Given 1->1->2->3->3, return 1->2->3. AC class ListNode(): def __init__(self, x): self.val
JNingWei
2018/09/27
3890
Leetcode 题目解析之 Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
ruochen
2022/01/14
1.2K0
Leetcode No.82 删除排序链表中的重复元素 II
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
week
2021/11/29
2350
2023年前端面试题汇总-数据结构(链表)
在计算机里,不保存在连续存储空间中,而每一个元素里都保存了到下一个元素的地址的数据结构,我们称之为链表(Linked List)。链表上的每一个元素又可以称它为节点(Node),而链表中第一个元素,称它为头节点(Head Node),最后一个元素称它为尾节点(Tail Node)。
越陌度阡
2023/06/10
1.3K0
2023年前端面试题汇总-数据结构(链表)
83. Remove Duplicates from Sorted List(Linked List-Easy)
该文讲述了如何删除排好序的链表中的重复元素,使得每个元素只出现一次。首先,定义一个虚拟头节点,然后遍历链表,如果当前节点和下一个节点的值相同,则将下一个节点的next指针指向当前节点的next指针,最后返回虚拟头节点的下一个节点即可。对于给定的链表1->1->2,返回的是1->2;对于链表1->1->2->3->3,返回的是1->2->3。
Jack_Cui
2018/01/08
6070
链表反转问题
对于链表问题的求解,大体做法是画出图一步一步分析。一般都可以进行原地操作(即额外空间复杂度为O(1))。
你的益达
2020/08/05
3800
链表反转问题
Leetcode【24、109、328、455、725】
这道题是给一个链表,相邻结点数值两两进行交换,要求不修改结点值且只能操作链表本身。
echobingo
2019/10/28
4520
LeetCode 0082 - Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Reck Zhang
2021/08/11
2080
golang刷leetcode 链表(2) 删除重复元素
输入: 1->3->2->3->5->4->4 输出: 1->3->2->5->4 示例 2:
golangLeetcode
2022/08/02
5670
LeetCode 203 & 237. Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
大学里的混子
2018/10/28
5490
Q83 Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3. 解题思路: 链表删除操作的应用,即 cur.next = cur.next.next,时间复杂度为 O(n)。 Python实现: # Definition for si
echobingo
2018/04/25
7640
​LeetCode刷题实战82:删除排序链表中的重复元素 II
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/
程序员小猿
2021/01/19
3820
LeetCode 203:移除链表元素
Remove all elements from a linked list of integers that have value val.
爱写bug
2019/07/18
9460
推荐阅读
相关推荐
leetcode: 82. Remove Duplicates from Sorted List II
更多 >
领券
社区新版编辑器体验调研
诚挚邀请您参与本次调研,分享您的真实使用感受与建议。您的反馈至关重要,感谢您的支持与参与!
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场