forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoveDuplicateList.java
More file actions
57 lines (50 loc) · 1.46 KB
/
RemoveDuplicateList.java
File metadata and controls
57 lines (50 loc) · 1.46 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class RemoveDuplicateList {
/**
* 一个链表,删除相邻且重复的
* 如 1, 3, 3, 3, 1, 2, 4, 4,只保留1, 1, 2
*/
public ListNode removeDup(ListNode head) {
ListNode dummy = new ListNode(0), cur = dummy;
ListNode last = null;
int count = 0;
for (ListNode p = head; p != null; p = p.next) {
if (last == null || last.val == p.val) {
last = p;
count++;
} else {
if (count == 1) {
cur.next = last;
cur = cur.next;
}
last = p;
count = 1;
}
}
if (last != null && count == 1) {
cur.next = last;
cur = cur.next;
}
cur.next = null;
return dummy.next;
}
// 可在上面的基础上精简
// count是可以去掉的
public ListNode removeDup2(ListNode head) {
if (head == null) {
return null;
}
ListNode dummy = new ListNode(0), cur = dummy;
ListNode last = head;
for (ListNode p = head.next; p != null; p = p.next) {
if (last.val != p.val) {
if (last.next == p) {
cur.next = last;
cur = cur.next;
}
last = p;
}
}
cur.next = (last.next == null ? last : null);
return dummy.next;
}
}