BM16 删除有序链表中重复的元素-II

alt

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
 *
 * @param head ListNode类
 * @return ListNode类
 */
function deleteDuplicates(head) {
  // write code here
  if (!head || !head.next) return head;
  let newList = new ListNode(0);
  newList.next = head;
  let curr = newList;
  while (curr && curr.next && curr.next.next) {
    if (curr.next.val === curr.next.next.val) {
      //       记录重复的值,向后依次对比,直到不相等就跳出循环
      let val = curr.next.val;
      while (curr.next && curr.next.val === val) {
        curr.next = curr.next.next;
      }
    } else {
      curr = curr.next;
    }
  }
  return newList.next;
}

//    1 -> 2 -> 2 -> 3 -> 4 -> 4 - > 4 -> 5 -> null
//   curr  cn   cnn
//                   cn
//                  curr  cn   cnn
//                             cn    cnn
//                                        cn
//                                       curr

module.exports = {
  deleteDuplicates: deleteDuplicates,
};

如有问题望指正