剑指offer面试题15
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N =sc.nextInt();
/*
* 易错点
* 思考:哪里错误!!
*/
/* Node head=new Node();
Node node=head;
Node nodeNext;
for (int i = 0; i < N; i++) {
nodeNext=new Node();
node.value=sc.nextInt();
node.next=nodeNext;
node=node.next;
}
node=null;*/
ListNode head=new ListNode();
ListNode node=head;
for(int i=0;i<N-1;i++){
ListNode p=new ListNode();
node.value=sc.nextInt();
node.next=p;
node=node.next;
}
node.value=sc.nextInt();
node.next=null;
int k=sc.nextInt();
System.out.println(head.value);
ListNode kthNode=FindKthToTail(head,k);
System.out.println(kthNode.value);
sc.close();
}
/**
* @param pListHead
* @param k
* @return
* 要考虑鲁棒性,判断:1.如果头结点为空;2.如果k为0;3.如果头结点不为空,但总节点数小于k
*
*
*/
public static ListNode FindKthToTail(ListNode pListHead, int k) {
if (pListHead == null || k <= 0) {
return null;
// throw new RuntimeException("input error");
}
ListNode pAhead = pListHead;
for (int i = 0; i < k-1; i++) {
if (pListHead.next != null) {
pListHead = pListHead.next;
} else {
return null;
// throw new RuntimeException("input error");
}
}
while (pListHead.next != null) {
pListHead = pListHead.next;
pAhead = pAhead.next;
}
return pAhead;
}
}
class ListNode {
int value;
ListNode next;
}