面试题57:删除链表中重复的结点
来源:互联网 发布:飞跃淘宝店铺信息软件 编辑:程序博客网 时间:2024/05/23 02:22
算法思想:方法一,递归实现。
public class Solution { public ListNode deleteDuplication(ListNode pHead) { if (pHead == null || pHead.next == null) { // 只有0个或1个结点,则返回 return pHead; } if (pHead.val == pHead.next.val) { // 当前结点是重复结点 ListNode pNode = pHead.next; while (pNode != null && pNode.val == pHead.val) { // 跳过值与当前结点相同的全部结点,找到第一个与当前结点不同的结点 pNode = pNode.next; } return deleteDuplication(pNode); // 从第一个与当前结点不同的结点开始递归 } else { // 当前结点不是重复结点 pHead.next = deleteDuplication(pHead.next); // 保留当前结点,从下一个结点开始递归 return pHead; } }}
算法思想:把当前结点的前一个结点(pre)和后面值比当前结点的值要大的结点相连。
public class Solution { public ListNode deleteDuplication(ListNode pHead) { if(pHead == null || pHead.next == null) return pHead; ListNode temp = new ListNode(-1); temp.next = pHead; ListNode curNode = pHead; ListNode pre = temp; while(curNode != null && curNode.next != null){ ListNode next = curNode.next; if(curNode.val == next.val){ while(next != null && curNode.val == next.val){ next = next.next; } pre.next = next; curNode = next; }else{ pre = curNode; curNode = curNode.next; } } return temp.next; }}
阅读全文
0 0
- 面试题57:删除链表中重复的结点
- 剑指offer-面试题57:删除链表中重复的结点
- 剑指offer--面试题57:删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 剑指offer-面试题57-删除链表中重复的结点
- 剑指offer 面试题57 删除链表中重复的结点
- 面试题57:删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer面试题[57]-删除链表中重复的结点
- 【剑指Offer】面试题57:删除链表中重复的结点
- 面试题57. 删除链表中重复的结点
- 《剑指Offer》学习笔记--面试题57:删除链表中重复的结点
- 【剑指Offer学习】【面试题57:删除链表中重复的结点】
- 剑指Offer系列-面试题57:删除链表中重复的结点
- 《剑指offer》面试题57 删除链表中重复的结点 C++ 实现 以及 错误总结 (指针问题)!!
- 《剑指Offer》面试题57:删除链表中重复的节点
- 删除链表中重复的结点
- 详解数据挖掘与机器学习的区别与联系
- 如何严格设置php中session过期时间
- Qt鼠标键盘事件
- python学习笔记(3)——循环
- [jzoj]3526. 【NOIP2013模拟11.7A组】不等式(solve)(类欧几里得)
- 面试题57:删除链表中重复的结点
- spring与redis整合(一)--采用原生的jedis(ShardedJedisPool)
- Andriod5.0新特性
- java-day05-Thread-基础知识以及运用API第一种方法使用Thread类
- 【Eternallyc】JAVA语法-instanceof运算符
- 深搜记录路径——部分和问题
- 生产者消费者问题的pthread模拟
- 类与对象
- <![CDATA[]]>和转义字符 (注:这篇文章是本人在其他地方看到的,刚好项目中mybatis用到了,所以转来分享)