输入一个链表,输出该链表中倒数第k个结点。方法一:
/*
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||k<=0)return null;
ListNode pAhead=head;
ListNode pBhead=null;
for(int i=0;i<k-1;i++){
if(pAhead.next!=null)pAhead=pAhead.next;
else return null;
}
pBhead=head;
while(pAhead.next!=null){
pBhead=pBhead.next;
pAhead=pAhead.next;
}
return pBhead;
}
}方法二:public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if (head == null) return null;
ListNode node = head;
int count = 0;
while (node != null) {
count++;
node = node.next;
}
if (count < k) return null;
ListNode p = head;
for (int i = 0; i < count - k; i++) {
p = p.next;
}
return p;
}
}
本文介绍两种方法来解决链表中寻找倒数第K个节点的问题。方法一使用双指针技术,其中一个指针先向前移动K步;方法二首先遍历整个链表以获取链表长度,然后再次遍历并返回倒数第K个节点。

被折叠的 条评论
为什么被折叠?



