刷题使我快乐,满脸开心.jpg

  • 来源:力扣(LeetCode)
  • 链接:https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
  • 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目

给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。

示例 1:

输入:head = [2,4,7,8], cnt = 1
输出:8

提示:

  • 1 <= head.length <= 100
  • 0 <= head[i] <= 100
  • 1 <= cnt <= head.length

思路

快慢指针的又一种使用,先让快指针走出去cnt个,再跟随上慢指针,那么快指针到尾部的next时,慢指针就正好指向倒数第cnt个节点了~

之前发布过另外一个形式的题目,基本没有太大的区别:
LeetCode-19. 删除链表的倒数第 N 个结点

上代码。

代码

func trainingPlan(head *ListNode, cnt int) *ListNode {
	fast := head
	slow := head
	for cnt > 0  {
		fast = fast.Next
		cnt--
	}
	// 没到头则slow跟随走动
	// fast停下时
	// slow的下一个节点就是要找的节点
	for fast != nil {
		fast = fast.Next
		slow = slow.Next
	}
	return slow
}