【牛客】BM16删除有序链表中重复的元素-II

AI摘要:

BM16 删除有序链表中重复的元素-II

中等 通过率:28.68% 时间限制:1秒 空间限制:256M
知识点链表

描述

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

数据范围:链表长度 0≤n≤10000,链表中的值满足 ∣val∣≤1000
要求:空间复杂度 O(n),时间复杂度O(n)
进阶:空间复杂度 O(1),时间复杂度 O(n)

示例1

1
2
输入:{1,2,2}
返回值:{1}

示例2

1
2
输入:{}
返回值:{}

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* @param head ListNode类 
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
if(head == null || head.next == null){
return head;
}

ListNode o = new ListNode(10000);
o.next = head;
ListNode p = head;
ListNode q = head.next;
ListNode k = o;

while(q != null){
if(p.val == q.val){
q = q.next;
while(q != null){
if(p.val == q.val){
q = q.next;
}else{
break;
}
}

o.next = q;
p = q;
if(q == null){
break;
}else{
q = q.next;
}
}else{
o = p;
p = q;
q = q.next;
}
}
return k.next;
}

【牛客】BM16删除有序链表中重复的元素-II
https://blog.cngo.rr.nu/posts/7b0b.html
作者
cngo
发布于
2024年8月15日
许可协议