思路:
倒着数第k个,两个指针,先让一个指针前进k-1,再一起前进,先走的那个指针走到最右边,这时走得慢的指针所在的位置就是所求的倒数第k个。注意,要考虑特殊情况,养成好习惯。(k的值大于链表长度,k小于等于0,链表为空)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
if(head==null || k<=0){
return head;
}
ListNode node = head;
for(int i=0;i<k-1;i++){
if(node.next!=null){
node=node.next;}
else{
return null;
}
}
while(node.next!=null){
node=node.next;
head=head.next;
}
return head;
}
}