题目描述
输入一个链表,输出该链表中倒数第k个结点。
分析:此题为常见的快慢指针问题,java实现时要注意空指针错误以及边界条件。使用两个指针p和q,一个指针先走k-1步,然后第二个指针开始走。当第一个指针指向单链表的最后一个节点时,第二个指针指向倒数第k个节点。代码如下:
1 /*
2 public class ListNode {
3 int val;
4 ListNode next = null;
5
6 ListNode(int val) {
7 this.val = val;
8 }
9 }*/
10 public class Solution {
11 public ListNode FindKthToTail(ListNode head,
int k) {
12 if(head==
null||k==0
){
13 return null ;
14 }
15 ListNode p =
new ListNode(0
) ;
16 ListNode q =
new ListNode(0
) ;
17 p =
head ;
18 q =
head ;
19 while(k>1&&p.next!=
null){
20 p=
p.next ;
21 k--
;
22 }
23 if(k>=2
){
24 return null ;
25 }
26 while(p.next !=
null&&q.next!=
null){
27 p=
p.next ;
28 q=
q.next;
29 }
30 return q ;
31 }
32 }
转载于:https://www.cnblogs.com/huntertoung/p/4765161.html