代码随想录算法训练营第三天|203.移除链表元素,707.设计链表,206.反转链表

今日任务:

203.移除链表元素

707.设计链表

206.反转链表


  • 203.移除链表元素
    • 删除头节点和其他节点不同,但是在链表前加一个统一的节点——虚拟头节点,那么链表中所有元素就可以用统一的方法删除。思路巧妙,代码写起来也比较简单了。
    • var removeElements = function(head, val) {
          let headerList = ListNode(0, head)
          let current = headerList
          while(current.next){
              if(current.next.val === val){
                  current.next = current.next.next
              }
              current = current.next
          }
          return headerList.next
      };
  •  707.设计链表
    • 这个题要设计五个接口,比较综合
      • get(index):获取链表中下标值为index 的节点的值。如果索引无效,则返回-1。
        • 根据index的值做递减,然后current = current.next,就会得到下标值为index的节点
      • addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
        • 需要验证链表是不是空链表,如果是空链表的话,那么!this._tail的值为真,往链表里添加的元素既是头元素,又是尾部元素
      • addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
        • 先让现存的尾节点指向新加入的节点,然后新加入的节点设置为尾节点
        • 和addAtHead(val)一样,都要判断是不是空链表,如果是空链表,则需要首尾都指向新添加的节点
      • addAtIndex(index, val)和deleteAtIndex(index)一样,都需要根据index找到对应的节点,然后获取上一个节点。
  • 206.反转链表
    • 先把当前节点的下一个节点记录下来,然后然后把当前节点的next换做前一个节点,进行链表反向连接,最后当前节点又是下一个节点的next。比较简单。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值