链表中倒数第k个结点
来源:互联网 发布:韩国免费音乐软件 编辑:程序博客网 时间:2024/04/27 13:44
题目描述
输入一个链表,输出该链表中倒数第k个结点。
第一种方法:拿到题目后,首先想到就是构建链表的结构,代码如下:
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}其次,就是选择使用递归的想法来实现,方法也比较简单,不用再考虑其边界等等。
1、设置全局变量length为0;
2、遍历到末尾部分;
3、初始化ListNode为空,直达length和k相同时再给其赋值,否则一直为空。
时间复杂度为log(n)。是不是超简单!
public class Solution { public int length=0; public ListNode FindKthToTail(ListNode head,int k) { ListNode result=null;if(head!=null) result=FindKthToTail(head.next,k); if(length==k) result=head; length++; return result; }}
另一种方法:首先记录head为temp,head往前进k个节点,然后temp和head一起往前进,至到head为空为止。但这个方法容易出现鲁棒性问题。代码如下:
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { int n=1;ListNode temp=head; while(head!=null && n<k){ head=head.next;++n; } if(head==null || n!=k) return null; while(head.next!=null){ temp=temp.next; head=head.next; } return temp; }}
0 0
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第 k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 输出链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k 个结点
- 链表中倒数第k个结点
- 查找链表中倒数第k个结点
- 链表中倒数第k个结点
- 链表中倒数第k个结点[数据结构]
- 链表中倒数第k个结点
- ssm+shiro基础框架搭建(一)
- 关于文本模式设置为ie7列表不能显示出来,i9以上可以
- matlab安装Robotics Toolbox
- 时间戳和字符串互相转换,以及时间戳转换成时间
- 爱你一万年
- 链表中倒数第k个结点
- 关于分类的IP地址
- GreenDao 3.1学习总结
- 第八章上机练习3 老师答案
- myxls
- 笔试题:SQL统计各班成绩第一名的学生信息
- ubuntu linux 串口配置详解
- mysql数据库忘记密码
- 开源学习