
剑指 offer之删除链表中重复的结点_java
发布日期:2021-05-07 02:40:25
浏览次数:23
分类:精选文章
本文共 1509 字,大约阅读时间需要 5 分钟。
题目:删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 自己的解题思路,微low,但是还是要写一下: 解题思路:可以借助一个Map集合来进行记录链表中的元素出现的次数 将出现一次的元素重新组合成为新的链表然后进行返回。 代码实现:/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.*;public class Solution { public ListNode deleteDuplication(ListNode pHead){ Mapmp=new HashMap<>(); while(pHead!=null) { if(mp.containsKey(pHead.val)) { mp.put(pHead.val, mp.get(pHead.val)+1); }else { mp.put(pHead.val, 1); } pHead=pHead.next; } ListNode curN=new ListNode(-1); ListNode cur=curN; Set keySet = mp.keySet(); Iterator it = keySet.iterator(); while(it.hasNext()) { int key=it.next(); int val=mp.get(key); if(val==1) { cur.next=new ListNode(key); cur=cur.next; } } return curN.next; }}
借鉴别人的思路:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.*;public class Solution { public ListNode deleteDuplication(ListNode pHead) { ListNode curN=new ListNode(-1); curN.next=pHead; ListNode pre=curN; ListNode last=curN.next; while(last!=null) { if(last.next!=null && last.val==last.next.val) { while(last.next!=null &&last.val==last.next.val) { last=last.next; } pre.next=last.next; last=last.next; }else { pre=pre.next; last=last.next; } } return curN.next; }}
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月07日 21时54分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux更新内核
2019-03-13
Emacs Org-mode 的使用
2019-03-13
移动web开发问题和优化小结
2019-03-13
手写分布式事务之一(架构设计)
2019-03-13
优先级队列2
2019-03-13
递归-C-二分查找+排序
2019-03-13
独木舟上的旅行2
2019-03-13
mysql怎么设置自动更新时间
2019-03-13
struts跳转jsp后没有样式
2019-03-13
Docker Compose配置文件详解(V3)
2019-03-13
Python学习 Day54 生产者与消费者模式 02
2019-03-13