题解 | #删除链表中重复的结点#
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
Set<Integer> set = new HashSet<>();
ListNode cur = pHead;
while (cur != null) {
if (set.contains(cur.val)) {//存在就删除 但是set中储存的并没哟删除
pHead = del(pHead, cur.val);//一次就会把所有相同的给删除
} else {
set.add(cur.val);
}
cur = cur.next;
}
return pHead;
}
public ListNode del(ListNode node, int val) {
ListNode cur = node;
ListNode prev = node;
while (cur != null) {
if (cur == node && cur.val == val) {
cur = cur.next;
prev = node = cur;
} else if (cur.val == val) {//删除
prev.next = cur.next;
cur = cur.next;
} else {
prev = cur;
cur = cur.next;
}
}
return node;
}
}
OPPO公司福利 1101人发布
查看11道真题和解析