题目描述
输入一个链表,输出该链表中倒数第k个结点。
源代码:
解法一:没有通过
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.Stack;
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null) return null;
Stack<ListNode> s=null;
int cnt=0;
while(head!=null){
s.push(head);
head=head.next;
cnt++;
}
if(cnt<k) return null;
int i=0;
ListNode knode=null;
while(i<=k-1){
if(!s.empty()){
knode = s.pop();
i++;
}else{
break;
}
}
return knode;
}
}
解法二:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.Stack;
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null) return null;//先把链表里的元素入栈,然后再出栈,同时对元素进行计数,
if(k==0) return null;//如果是需要返回倒数第0个元素,则返回空值
Stack<ListNode> s=new Stack<ListNode>();//注意这里栈的定义
int cnt=0;
while(head!=null){
s.push(head);
head=head.next;
cnt++;
}
if(cnt<k) return null;//如果连表里的元素个数少于k个,则返回空值
int count=0;
ListNode knode=null;
while(!s.empty()){//将栈里面的元素出栈,是第k个元素时,跳出循环,返回该节点
knode = s.pop();
count++;
if(count==k) break;
}
return knode;
}
}