/*
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 first = head;
ListNode last = head;
int c = k;
int count = 0;
if (head == null) return null;
while (first != null) {
first = first.next;
count++;
if(k < 1) {
last = last.next;
}
k--;
}
if(count < c) return null;
return last;
}
}
第二种方法:
/*
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 fast = head;
ListNode slow = head;
if (k <= 0 || head == null) return null;
while (k>1) {
if(fast.next == null) {
return null;
} else {
fast = fast.next;
k--;
}
}
while(fast.next != null) {
slow = slow.next;
fast = fast.next;
}
return slow;
}
}
我们要注意的一个思想就是:输出倒数第K个节点,就先让一个节点走K-1步,后面两个节点一起走,最后返回第二个节点的值,就是我们要找的值。