题目:输入一个链表,输出该链表中倒数第k个结点。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//判断异常情况——代码健壮性
if(head == null || k<=0)
return null;
//设置两个节点指向头节点
ListNode node1 = head;
ListNode node2 = head;
for(int i=0; i<k-1; i++)//node1先走k步
node1 = node1.next;
if(node1 == null)//为空,说明链表长度不够
return null;
else{//否则,node1与node2同时走
while(node1.next != null){//node1走到尾节点的时候停止
node1 = node1.next;
node2 = node2.next;
}
return node2;//node2刚好指向倒数第k个节点
}
}
}
笔记:
一切都在代码和注释中……总之就是两个指针&靠步数差完成~