删除排序链表中的重复元素(LeetCode83)
给定一个已排序的链表的头节点 head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。
问题描述
给定一个已排序的链表,需要删除链表中所有重复的元素,使每个元素只出现一次。
解决方法
我们可以使用双指针法来解决这个问题。定义两个指针 left 和 right,初始时都指向链表的头节点 head。然后,我们开始遍历链表,比较 left 和 right 指针指向的节点的值:
- 如果 
left和right指向的节点的值相同,则移动right指针,直到找到一个与当前节点值不同的节点。 - 如果 
left和right指向的节点的值不同,则将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 实现。双指针法是一种常用的解决链表问题的方法,通过定义两个指针来遍历链表并处理元素,可以有效地解决多种链表问题。
          
            
          
评论区