面试题57. 删除链表中重复的结点
来源:互联网 发布:梦幻西游淘宝租号 编辑:程序博客网 时间:2024/06/05 02:44
面试题57. 删除链表中重复的结点
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路:
定义三个结点 pre、h、post,分别表示前驱、当前和后继。 然后扫描整个链表:
- 如果h.val 不等于 post.val,那么pre、h、post依次向后移动一位
- 反之,post不断后移,直到遇到val不相等的结点
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { public ListNode deleteDuplication(ListNode head) { ListNode h = head, pre = new ListNode(0); pre.next = h; ListNode post = null; while(h != null && (post = h.next) != null) { if(h.val != post.val) { // 如果不相等,pre、h、post就依次向后移动一位 pre = h; }else { // 如果相等, while(post != null && h.val == post.val) { // post 不断向后移动 post = post.next; } if(pre.next == head) { // 如果是从头结点开始就一直重复 head = post; // 注意,如果从头结点就开始重复,需要修改head } pre.next = post; } h = post; } return head; }}
阅读全文
0 0
- 面试题57. 删除链表中重复的结点
- 面试题57:删除链表中重复的结点
- 剑指offer-面试题57:删除链表中重复的结点
- 剑指offer--面试题57:删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer-面试题57-删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 面试题57:删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer面试题[57]-删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 《剑指Offer》学习笔记--面试题57:删除链表中重复的结点
- 【剑指Offer学习】【面试题57:删除链表中重复的结点】
- 剑指Offer系列-面试题57:删除链表中重复的结点
- 《剑指offer》面试题57 删除链表中重复的结点 C++ 实现 以及 错误总结 (指针问题)!!
- 删除链表中重复的结点
- 删除链表中重复的结点
- IDEA-->安装IntelliJ IDEA 2017.2.3流程
- python3_python2
- springMVC --全局异常处理(两种方式)
- Tomcat启动成功但无法访问 访问时报404
- 初识数据库SQL
- 面试题57. 删除链表中重复的结点
- C++学习笔记---拷贝构造函数
- Apache配置多端口
- Spark读取hdfs一行并打印
- javascript中的异步和同步
- 九种浏览器端缓存
- 7、SHA1加密算法
- 开发总结
- dom提高分辨率转canvas