链表-删除链表中重复的结点-java
删除链表中重复的结点
题目描述
【链表-删除链表中重复的结点-java】在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
/*解题思路:递归
*/
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
//当前只有0或1个节点,之间返回
if(pHead==null||pHead.next==null){
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;
}}
}
推荐阅读
- Win10系统下如何创建无法被删除的文件夹?
- 如何删除win8系统自带但不用的技巧设备
- win8破解版系统右下角水印的删除技巧
- 系统之家win7纯净版gho系统无法删除文件的应对手段
- 删除指尖拼音的2大办法
- NFS系统的链接
- mac删除分区并合并分区(转载)
- 数据结构|【数据结构】约瑟夫环(单向循环链表的应用)——C语言
- 多线程查询|多线程查询,效率翻倍
- anaconda|Windows系统下完美配置GPU版TensorFlow2.x深度学习环境(附带每个步骤所需软件工具的链接)