题目:
输入一个链表,输出该链表中倒数第k个结点。
解析:
最原始的想法就是先遍历一遍得到这个链表的长度,然后第二次遍历得到第K个节点的.第二种方法的思想很巧妙可以只遍历一次就可以.设置两个指针,先让尾指针向后移动k-1个单位,然后两个指针同时移动,直到尾指针到链表的最后一个节点,那么头指针就指向的是第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 first = head;
ListNode last = head;
for(int i = 0 ; i < k-1 ;i++){
if(last.next!=null){
last = last.next;
}else{
return null;
}
}
while(last.next != null){
first = first.next;
last = last.next;
}
return first;
}
}