的方法可以通过遍历链表,使用一个哈希表来记录每个节点的值是否已经出现过,如果出现过则删除该节点。
具体步骤如下:
以下是一个示例代码:
function ListNode(val) {
this.val = val;
this.next = null;
}
function deleteDuplicates(head) {
if (!head || !head.next) {
return head;
}
let hash = {};
let curr = head;
let prev = null;
while (curr) {
if (hash[curr.val]) {
prev.next = curr.next;
} else {
hash[curr.val] = true;
prev = curr;
}
curr = curr.next;
}
return head;
}
// 示例用法
let head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(2);
head.next.next.next = new ListNode(3);
let result = deleteDuplicates(head);
console.log(result); // 输出: ListNode { val: 1, next: ListNode { val: 2, next: ListNode { val: 3, next: null } } }
这个方法的时间复杂度是O(n),其中n是链表的长度。
领取专属 10元无门槛券
手把手带您无忧上云