首页 > 其他分享 >删除链表的倒数第 N 个结点

删除链表的倒数第 N 个结点

时间:2022-08-15 22:47:04浏览次数:76  
标签:结点 题目 先走 链表 倒数第 指针

题目描述

  1. 题目地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
  2. 题目要求:
    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

解题思路

  1. 先后指针:
    快指针先走n-1步后慢指针再开始从头节点开始走。当快指针走到最后一个结点的 时候,慢指针就走到了倒数第N个结点。
  2. 定义fast和slow两个指针

解题代码

// 先指针先走n-1步
var removeNthFromEnd = function(head, n) {
  let fast = head;
  for(let i=1; i<=n-1; i++) {
    fast = fast.next;
  }
  let slow = head;
  // 缓存要删除结点的前一个结点
  let pre = null;
  while(fast.next) {
    pre = slow;
    fast = fast.next;
    slow = slow.next;
  }
  // 如果要删除的结点是第一个结点的话,则直接返回slow.next
  if(pre === null) {
    return slow.next;
  }
  else {
    pre.next = slow.next;
  }
  return head;

}

标签:结点,题目,先走,链表,倒数第,指针
From: https://www.cnblogs.com/xiayuxue/p/16589913.html

相关文章

  • 合并两个排序的链表
    目录题目描述解题思路解题代码题目描述题目地址:http://mtw.so/6r71s0题目要求:输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的......
  • django ORM定义实现链表结构
    需求场景各种链表使用场景,如单串,双端链表等需求描述实现阶段间串联的可前进后退的关系模型逻辑分析节点间串联.主要需要控制的是前节点和后节点的顺序关系以及......
  • 1075 链表元素分类——25分
    给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0,K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变......
  • 链表内指定区间反转
    目录题目描述解题思路解题代码题目描述题目地址:http://mtw.so/5Pu929题目要求将一个节点数为size链表m位置到n位置之间的区间反转,要求时间复杂度O(n),空间复......
  • 反转链表
    题目描述题目地址:http://mtw.so/6jyXMj题目要求给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范......
  • 从二叉树根节点搜索到指定结点的路径
    LC236题,二叉树的最近公共祖先:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/其中一种解法的关键,是找到从根节点到指定结点的路径。 pu......