美文网首页
【算法练习leetcode篇】之链表——203. Remove

【算法练习leetcode篇】之链表——203. Remove

作者: 芒果加奶 | 来源:发表于2019-02-14 17:49 被阅读0次

分析:控制两个指针,current和pre,在while循环中,从head开始循环遍历链表,当值相同时pre.next=current.next忽略current项,从而删掉current

// 203. Remove Linked List Elements 删除链表元素
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 
 */
/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function(head, val) {
  let current = head,
    pre = null;
  while (current) {
    if (current.val === val) {
      if (pre) {
        // 非head项,pre直接指向current.next节点,忽略current节点
        pre.next = current.next;
      } else {
        //pre=null时,说明在链表第一项发现被删除的node,直接head=current.next忽略current节点
        head = current.next;
      }
    } else {
      // 值不等时pre=current,移动pre指针控制链表循环
      pre = current;
    }
    current = current.next;
  }
  return head;
};

相关文章

网友评论

      本文标题:【算法练习leetcode篇】之链表——203. Remove

      本文链接:https://www.haomeiwen.com/subject/aacyeqtx.html