首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用js删除链表中的重复项

的方法可以通过遍历链表,使用一个哈希表来记录每个节点的值是否已经出现过,如果出现过则删除该节点。

具体步骤如下:

  1. 创建一个哈希表用于记录节点值的出现情况。
  2. 遍历链表,对于每个节点执行以下操作:
    • 判断当前节点的值是否已经在哈希表中出现过。
    • 如果已经出现过,则将当前节点从链表中删除。
    • 如果没有出现过,则将当前节点的值添加到哈希表中。
  • 返回删除重复项后的链表。

以下是一个示例代码:

代码语言:txt
复制
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是链表的长度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券