两个指针,一前一后前面的比后面的先走k步,然后一起向后走
运行时间:22ms
占用内存:9660k
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode p=head,q=head;
for( int i=1;i<k;i++){
if(p.next!=null){p=p.next;}
else return null;
}
while(p.next!=null){
p=p.next;
q=q.next;
}
return q;
}
}
运行时间:26ms
占用内存:9592k
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode p=head,q=head;
int i=0,j;
if(head==null||k<=0)return null;
for( i=0;p!=null;i++){ //先获取链表长度
p=p.next;
}
if(i<k)return null;
j=(i-k);
while(j>0){
q=q.next;
j--;
}
return q;
}
}