《剑指offer》——删除链表中重复的结点
2015-11-25 20:07
501 查看
T:
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
题目不难,细心做就行。
code:
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
题目不难,细心做就行。
code:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ /** * T: 删除链表中重复的结点 * * 题目描述 * 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点, * 重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 * * date: 2015.11.25 19:24 * @author SSS * */ public class Solution { public ListNode deleteDuplication(ListNode pHead) { if (pHead == null || pHead.next == null) { return pHead; } // 指向当前情况下没有重复的最后一个元素 ListNode anchorHead = new ListNode(0); anchorHead.next = pHead; ListNode preNode = anchorHead; ListNode postNode = pHead; boolean flag = false; while (postNode.next != null) { if (postNode.next.val == postNode.val) { postNode.next = postNode.next.next; flag = true; // 标记当前有重复元素 // 在重复的情况下,next指针为null了,就把该节点也在此删掉 // 因为下一轮直接退出while循环了 if (postNode.next == null) { preNode.next = null; } } else { // 当前的postNode也是重复的一个节点 if (flag) { postNode = postNode.next; preNode.next = postNode; flag = false; } else { preNode = postNode; postNode = postNode.next; } } } return anchorHead.next; } }
相关文章推荐
- Bootstrap历练实例:响应式导航栏
- bootstrap 导航栏
- AngularJS控制器
- 剑指offer3 从尾到头打印链表
- 通往全栈工程师的捷径 —— react
- JavaScript面向对象
- JavaScript包装对象
- JavaScript作用域链
- 使用ZooKeeper ACL特性进行znode控制
- 贫下中农版jQuery
- jquery ajax后台向前台传list 前台用jquery $.each遍历list
- 剑指Offer·第一章
- 前端与美工职能上的区别
- 网页布局(html+css基础)
- css改变默认滚动条样式
- 前端css规范
- git push时提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
- 解决Jfinal多文件上传重命名的问题
- 关于cordova/nodejs/npm的坑
- JS的'=='、'==='、'!='、'!=='及数字字符串的'-'操作