侧边栏壁纸
博主头像
Fonda's Lab 博主等级

关山难越,谁悲失路之人?萍水相逢,尽是他乡之客。

  • 累计撰写 49 篇文章
  • 累计创建 27 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

删除排序链表中的重复元素(LeetCode83)

LouisFonda
2024-05-22 / 0 评论 / 0 点赞 / 4 阅读 / 0 字 / 正在检测是否收录...

删除排序链表中的重复元素(LeetCode83)

给定一个已排序的链表的头节点 head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。

问题描述

给定一个已排序的链表,需要删除链表中所有重复的元素,使每个元素只出现一次。

解决方法

我们可以使用双指针法来解决这个问题。定义两个指针 leftright,初始时都指向链表的头节点 head。然后,我们开始遍历链表,比较 leftright 指针指向的节点的值:

  • 如果 leftright 指向的节点的值相同,则移动 right 指针,直到找到一个与当前节点值不同的节点。
  • 如果 leftright 指向的节点的值不同,则将 left 指针指向 right 指向的节点,并继续遍历。

实现

以下是用 JavaScript 实现的代码:

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val);
 *     this.next = (next===undefined ? null : next);
 * }
 */

const deleteDuplicates = function (head) {
  let left = head;
  let right = head;
  while (right) {
    if (left.val === right.val) {
      right = right.next;
    } else {
      left.next = right;
      left = right;
    }
  }
  left.next = right;
};

在上面的代码中,我们定义了一个 deleteDuplicates 函数,接受链表的头节点作为参数,并使用双指针法删除重复元素。

总结

本文介绍了如何使用双指针法删除排序链表中的重复元素,并给出了相应的 JavaScript 实现。双指针法是一种常用的解决链表问题的方法,通过定义两个指针来遍历链表并处理元素,可以有效地解决多种链表问题。

0

评论区