微软算法100题13 查找单向链表倒数第K个节点
2015-10-23 16:55
447 查看
第13 题:
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0 个结点为链表的尾指针
思路:先遍历链表,求得总节点数N,则倒数第K个节点是正数N-K,时间复杂度为o(N+N-K)
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0 个结点为链表的尾指针
思路:先遍历链表,求得总节点数N,则倒数第K个节点是正数N-K,时间复杂度为o(N+N-K)
package com.rui.microsoft; public class Test13_FindKthNodeFromBack { public static void main(String[] args) { Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4); Node node5 = new Node(5); node1.next = node2; node2.next = node3; node3.next = node4; node4.next = node5; Node node = Test13_FindKthNodeFromBack.getKthFromBack(node1, 3); System.out.println(node.value); } public static Node getKthFromBack(Node head, int k){ Node node = head; if(null == node)return null; int size = 0; while(null != node){ node = node.next; size++; } int pos = size - k; if(pos < 0) return null; //put pointer to the head again int i = 0; node = head; while(i < pos){ node = node.next; i++; } return node; } static class Node{ int value; Node next; Node(int v){ this.value = v; } } }
相关文章推荐
- 转载一份C++线程池的代码,非常实用
- 20151023 - discuz 6 中 insenz 营销推广失效的问题
- Win10系统安装.net失败提示错误代码0x80070003的故障分析及解决方法
- 找出两个字符串的最大公共子串
- 在注入“sessionFactory”时提示java.lang.AbstractMethodError错误
- iOS 实现类似Scale9图片
- 每日一问
- 有人认为,“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”么?
- 性能测试-Jmeter
- 开箱即用的Jenkins镜像
- 谈谈.Net技术面试
- GSM-MODEM调试备忘(二)
- 解决 eclipse XXX cannot be read or is not a valid ZIP file
- 唬住老外的山寨三星,某宝只需300元!
- js 颜色10进制转化成rgba
- mybatis的一级缓存实现原理
- upload
- C#中HashTable的用法
- iOS.Performance-trick-presentViewController-is-so-slow-in-didSelectRowAtIndexPath
- springMVC对于controller处理方法返回值的可选类型