剑指offer 22
题目:
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
方法一:栈
暴力将节点全部压进栈中,
由于栈是头插头取,后进先出,顺序正好颠倒;
求第k个,就pop()出k次即为结果;
public class Solution {
public ListNode FindKthToTail (ListNode head, int k) {
ListNode r=null;
// base case
if(head==null){
return r;
}
Stack<ListNode> s=new Stack<>();
ListNode curr=head;
while(curr!=null){
s.push(curr);
curr=curr.next;
}
// 当k大于节点个数时!
if(k>s.size()){
return r;
}
// 弹出k次级为倒数第k个节点;
for(int i=0;i<k;i++){
r=s.pop();
}
return r;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89344.html