剑指Offer22. 链表中第k个节点Golang版
1. 问题描述
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。
示例:
给定一个链表: 1->2->3->4->5, 和 k = 2.
返回链表 4->5.
2. 思路
- 遍历链表求出长度
- 求第len-k+1个节点
3. 代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func getKthFromEnd(head *ListNode, k int) *ListNode {
len := 0
current := head
for current != nil {
len++
current = current.Next
}
var res *ListNode
current = head
count := 1
if count == (len-k+1) {
res = current
}
for current != nil {
current = current.Next
count++
if count == (len-k+1) {
res = current
break
}
}
return res
}