题目大致为:
在一个链表中,查找倒数的第k个数。
思路:
设置两个指针node1与node2,先使node1向前走k-1步,然后两个指针同时向前走,各自都是走一步。当node1到结尾时,node2刚好指到倒数第二个。
public class Test15 {
public ListNode findKnum(ListNode head,int k){
if (head==null) {
return null;
}
ListNode node1=head;
ListNode node2=head;
int i=1;
while(node1!=null&&node1.next!=null&&i<k){
node1=node1.next;
i++;
}
while(node1.next!=null){
node1=node1.next;
node2=node2.next;
}
return node2;
}
public static void main(String[] args) {
// 构建链表
ListNode node1=new ListNode();
ListNode node2=new ListNode();
ListNode node3=new ListNode();
node1.val=1;
node2.val=2;
node3.val=3;
node1.next=node2;
node2.next=node3;
Test15 test=new Test15();
// 查找倒数第k个
ListNode p = test.findKnum(node1, 1);
System.out.println(p.val);
}
}