链表中倒数第k个节点
题目:
输入一个链表,输出该链表中倒数第K个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的为节点是倒数第1个节点。例如,一个链表有6个节点,从头结点开始,他们的值依次是1,2,3,4,5,6。这个链表的倒数第3个节点是值为4的节点。链表的定义如下:
struct ListNode
{
int val;
ListNode *next;
}
NO1.我们要得到的是链表的倒数第n个节点,我们只需要找到尾节点,然后回溯到n步。但是呢,我们可以看到单链表的节点只有从前往后的指针不能从后往前走。
NO2.我们可以先遍历一遍链表,可以得知链表中有n个节点,则倒数第k个节点就是正数的第n-k+1个节点,这时候在遍历一遍链表,就可以找到倒数第k个节点,但是需要遍历两边链表。
NO3.我们准备两个指针,第一个走到第k-1个节点(从k-1到尾节点刚好是k),然后第二个指针从开头开始,