chencl1986/Blog

LeetCode题解:83. 删除排序链表中的重复元素,迭代,JavaScript,详细注释

Opened this issue · 0 comments

原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/

解题思路:

  1. 遍历链表,同时对比当前节点和下一个节点的值。
  2. 如果两个相邻节点的值相等,则将当前节点和下下个节点连接,即将下一个节点删除。
  3. 如果当前链表为1->1->2,在遍历第一个节点时,会发现第1、2个节点的值相同,那么就把第1个和第3个节点链接,链表就变成了1->2
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var deleteDuplicates = function (head) {
  let node = head; // 用于遍历链表

  // 对比重复元素,需要两个节点都存在
  while (node && node.next) {
    // 对比两个节点的值是否相等
    if (node.val === node.next.val) {
      // 如果相等就把当前节点和下下个节点链接,即吧node.next删除
      node.next = node.next.next;
      // 在删除了node.next后,需要继续对比node和node.next.next的值,因此需要继续循环
      continue;
    }

    // 如果两个节点的值不相等,则继续遍历链表
    node = node.next;
  }

  // 返回新链表
  return head;
};