LL16 删除链表中重复的元素-II
约 270 字小于 1 分钟
2025-03-24
描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
给出的链表为 1 -> 2 -> 3 -> 3 -> 4 -> 4 -> 5 , 返回 1 -> 2 -> 5
给出的链表为 1 -> 1 -> 1 -> 2 -> 3 , 返回 2 -> 3
链接
示例
{1, 2, 2} => {1}
{} => {}
{1, 1, 1} => {}
{2, 2, 3} => {3}题解
利用数组进行存储链表内元素出现的频次,最后进行拼接。
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* {1,2,2} => {1}
* {} => {}
* {1,1,1} => {}
* {2,2,3} => {3}
*
* @param head ListNode类
* @return ListNode类
*/
function deleteDuplicates(head) {
// write code here
let arr = [];
while (head) {
const t = arr.find((e) => e.val === head.val);
if (t) {
t.num++;
} else {
arr.push({
val: head.val,
num: 1
});
}
head = head.next;
}
let p = new ListNode();
let res = p;
arr.forEach((e) => {
if (e.num === 1) {
res.next = new ListNode(e.val);
res = res.next;
}
});
return p.next;
}
module.exports = {
deleteDuplicates: deleteDuplicates,
};