当前位置 : 主页 > 编程语言 > java >

#yyds干货盘点# 面试必刷TOP101:删除有序链表中重复的元素-II

来源:互联网 收集:自由互联 发布时间:2022-08-10
1.简述: 描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为 , 返回 .给出的链表为 , 返回 . 数据范围:链表长

1.简述:

描述

给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为, 返回.给出的链表为, 返回.

数据范围:链表长度 ,链表中的值满足 

要求:空间复杂度 ,时间复杂度 

进阶:空间复杂度 ,时间复杂度 

示例1

输入:

{1,2,2}

返回值:

{1}示例2

输入:

{}

返回值:

{}

2.代码实现:

import java.util.*;

/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/

public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates(ListNode head) {
if(head == null){
return null;
}
if(head.next != null && head.val == head.next.val){//发现有重复值
while(head.next != null && head.val == head.next.val){
head = head.next;//删除
}
return deleteDuplicates(head.next);//把与删除的那个结点相同的结点也进行删除
}
head.next = deleteDuplicates(head.next);//当没有发现重复值的情况,就一直进行递归操作
return head;
}
}

【文章原创作者:华为云代理 http://www.558idc.com/hw.html处的文章,转载请说明出处】
上一篇:【Java】运算符以及JShell脚本工具
下一篇:没有了
网友评论