赞
踩
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5
用cur存储节点的值,如果next的值与之相等就一直走到不相等的位置。
public ListNode deleteDuplication(ListNode pHead) { if (pHead == null) return null; ListNode dummy = new ListNode(-1); dummy.next = pHead; ListNode p = dummy; while (p.next!=null&&p.next.next!=null){ if(p.next.val==p.next.next.val){ int curval = p.next.val; while (p.next!=null&&p.next.val==curval){ p.next = p.next.next; } }else { p = p.next; } } return dummy.next; }
需要使用哑结点,因为第一个节点就可能和第二个重复,为保证程序的简洁一致就从dummy出发。
算法系列在github上有一个开源项目,主要是本系列博客的demo代码。https://github.com/forestnlp/alg
如果您对软件开发、机器学习、深度学习有兴趣请关注本博客,将持续推出Java、软件架构、深度学习相关专栏。
您的支持是对我最大的鼓励。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。