面试题15 链表中到户第K个节点
来源:互联网 发布:sql exists 编辑:程序博客网 时间:2024/05/22 06:56
题目:
输入一个链表,输出该链表中倒数第K个节点。为了符合少数人的习惯,本题从4开始计数,从头结点到尾节点依次为4,3,2,1,。倒数第3个节点为2.
输入:
一个头插法的单链表(4,3,2,1),和K(1)
输出:
第K个节点的值:1
解题思路:
有两种解法,第一种是通过遍历单链表获取其总长度,然后让总长度M减去K加上1获得正数位置L,就是倒数第K个节点。但是这样需要循环两次。第二种解法是只用循环一次就能获得第K个节点的值,我们声明两个指针,让两个指针所指的节点总长度为K,那么当有一个指针到达尾部的时候,另一个指针正好在第K个节点上。同时,我们要考虑函数的容错性,第一个头结点为空,第二个总结点数小于K,输入的K为0.
Java实现代码:
public static void main(String[] args) {// TODO Auto-generated method stubLinked linked=new Linked();linked.insertFirst(new Node(1));linked.insertFirst(new Node(2));Node node3=new Node(3);linked.insertFirst(node3);linked.insertFirst(new Node(4));System.out.println(FindKthToTail(linked.header, 1).data);}public static Node FindKthToTail(Node head,int k){//头指针和K的健壮性代码if(head==null && k<=0){return null;}Node header=head;Node begin=head;for(int i=0;i<k-1;i++){if(header.next!=null){header=header.next;//如果总结点小于K,那么我们返回null}else{return null;}}while(header.next!=null){header=header.next;begin=begin.next;}return begin;}
0 0
- 面试题15 链表中到户第K个节点
- 面试题15:链表中倒数第k个节点
- 面试题15:链表中倒数第K个节点
- 面试题15:链表中倒数第k个节点
- 面试题15:链表中倒数第K个节点
- 面试题15:单链表中倒数第k个节点
- 剑指offer 面试题15—链表中倒数第k个节点
- 剑指offer面试题15-链表中倒数第k个节点
- 剑指offer-面试题15-链表中倒数第k个节点
- 剑指offer面试题15 链表中倒数第k个节点(又是双指针,重要的是代码鲁棒性)
- 剑指offer_面试题15_链表中倒数第k个节点(考虑问题要全面)
- 剑指offer--面试题22:链表中倒数第k个节点
- 【剑指offer】面试题 22:链表中倒数第 K 个节点
- [剑指offer]面试题15.链表中倒数第K个节点
- 剑指Offer 面试题22:链表中倒数第k个节点 Java代码实现
- 剑指offer 面试题15 链表中的倒数第k个节点
- 【剑指offer】面试题15 使用一次遍历查找到倒数第K个节点-java
- 剑指Offer---面试题15:链表中的倒数第k个节点
- 小学生算数能力系统
- opencv2.4.10【附加的依赖项】
- 【Android笔记】Service的生命周期
- 项目开发流程记录
- Cmake-PROJECT_BINARY_DIR &PROJECT_SOURCE_DIR
- 面试题15 链表中到户第K个节点
- 递归求阶乘
- android 设置Spinner文字标题颜色 字体大小样式
- 357CountNumberswithUniqueDigits
- MongoDB(二)主从复制以及副本集的配置和使用
- android中所有颜色代码
- windows下编译及使用libevent
- onethink后台内容模板编辑器
- android添加新功能有感