题目描述
输入一个链表,输出该链表中倒数第k个结点。(网易游戏面试题,难度:easy)
分析:用两个指针p1,p2. p1先往前走k步,然后p1,p2同时向后走知道p1指向null
一开始写程序判定跳出条件是p1指向末尾节点,其实p1应该指向null才是结束。注意一些边界条件
/*
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) {
return head;
}
int len = 1;
ListNode Head = new ListNode(-1);
Head.next = head;
while (head.next != null) {
len++;
head = head.next;
}
if (k > len) {
return null;
}
ListNode p1 = Head,p2 = Head;
while (k>0) {
--k;
p1 = p1.next;
}
while (p1 != null) {
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
}