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

分析:控制两个指针,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;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 链表删除[203] Remove Linked List Elements[19] Remove Nth Node...
    野狗子嗷嗷嗷阅读 6,351评论 4 35
  • 如需转载, 请咨询作者, 并且注明出处.有任何问题, 可以关注我的微博: coderwhy, 或者添加我的微信: ...
    coderwhy阅读 11,245评论 15 48
  • 什么是数组? 数组简单来说就是将所有的数据排成一排存放在系统分配的一个内存块上,通过使用特定元素的索引作为数组的下...
    启明_b56f阅读 1,000评论 0 0
  • 六项精进 一、学习与实践 1.付出不亚于任何人的努力 2.要谦虚,不要骄傲 3.要每天反省 4.活着,就要感谢 5...
    周加华阅读 138评论 0 1
  • 人们总说,没有什么是永恒的,可是我却执拗的不肯相信,为什么就不是一直美好的? 是我的过错,也许我还是太早的流露...
    光棱昀际阅读 218评论 0 0