删除链表中重复的结点

题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

import java.util.HashSet;
import java.util.Set;

public class Solution {
    
    public ListNode deleteDuplication(ListNode pHead) {
        
        if(pHead == null)
            return null;
        ListNode node = pHead;
        ListNode pre = pHead;
        Set<Integer> set = new HashSet<Integer>();
        Set<Integer> set1 = new HashSet<Integer>();
        while(node != null) {
            
            if(set.contains(node.val)) {
                set1.add(node.val);
                pre.next = node.next;
                node = node.next;
            }else {
                
                set.add(node.val);
                pre = node;
                node = node.next;
            }
        }
        node = pHead;
        pre = pHead;
        while(node != null) {
            
            if(set1.contains(node.val)) {
                
                if(node == pHead) {
                    
                    pHead = pHead.next;
                    node = pHead;
                    pre = pHead;
                }else {
                    
                    pre.next = node.next;
                    node = node.next;
                }
            }else {
                
                pre = node;
                node = node.next;
            }
        }
        return pHead;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 删除链表中重复的结点 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返...
    Jacinth阅读 4,121评论 0 0
  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 8,854评论 4 74
  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,605评论 0 25
  • 真正的老司机…… 都喜欢在深更半夜…… 研究一些只有老司机才爱的东西。 你表污,Sir说的是—— 会飞的车,你研究...
    Sir电影阅读 5,216评论 1 12
  • 一月份进入公司,在新的环境中很快适应起来,并不是朝九晚五的工作,不累还算清闲,几天的同事相处都很融洽,彼此熟悉相知...
    刘黎斯琪阅读 2,271评论 0 0

友情链接更多精彩内容