21.链表中倒数第k个节点
输入一个链表,输出该链表中倒数第 k 个结点。
注意:
- k >= 1;
- 如果 k 大于链表长度,则返回 NULL;
数据范围:
链表长度 [0,30]。
样例:
输入:链表:1->2->3->4->5 ,k=2
输出:4
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode findKthToTail(ListNode pListHead, int k) {
//n用于计算链表的总长度
int n = 0;
ListNode p = pListHead;
//遍历链表计算长度
for(ListNode head = pListHead;head!=null;head = head.next)n++;
//如果k大于链表长度,直接返回null
if(k>n)return null;
//从头节点开始,往后移动n-k次,找到倒数第k个节点
for(int i = 0;i<n-k;i++)p = p.next;
//返回找到的节点
return p;
}
}