如何找出单链表中的倒数第k个元素
来源:互联网 发布:域名污染查询 编辑:程序博客网 时间:2024/06/03 13:21
1、为了找出倒数第k个元素,最容易想到的办法是首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为正数第n-k个,接下来遍历一次就可以得到结果。但是该方法存在一个问题,即需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-k个元素。
来自CODE的代码片
2、显然,这种方法还可以进行优化。于是想到了第二种方法,如果从头至尾的方向从链表中的某个元素开始,遍历k个元素后刚好达到链表尾,那么该元素就是要找到的倒数第k个元素,根据这一性质,可以设计如下算法:从头节点开始,依次对链表的每一个节点元素进行这样的测试,遍历k个元素,查看是否到达链表尾,只到找到哪个倒数第k个元素。此种方法将对同一批元素进行反复多次的遍历,对于链表中的大部分元素而言,都要遍历K个元素,如果链表长度为n个的话,该算法的时间复杂度为O(kn)级,效率太低。
3、存在另外一个更高效的方式,只需要一次遍历即可查找到倒数第k个元素。由于单链表只能从头到尾依次访问链表的各个节点,因此,如果要找到链表的倒数第k个元素的话,也只能从头到尾进行遍历查找,在查找过程中,设置两个指针,让其中一个指针比另一个指针先前移k-1步,然后两个指针同时往前移动。循环直到线性的指针值为NULL时,另一个指针所指向的位置就是所要找到的位置。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
来自CODE的代码片find_k_Element.java
阅读全文
0 0
- 如何找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第K个元素
- 如何找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第k个元素
- Java:如何找出单链表中的倒数第k个元素
- 一次遍历找出单链表中的倒数第k个元素
- 找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第k个元素-----思路分析
- 找出单链表中倒数第 k 个元素
- 找出单链表的倒数第k个元素
- 程序员面试题目总结--链表(2)【找出单链表中的倒数第K个元素】
- [算法]找出单链表中的倒数第k个元素
- [算法]找出单链表中的倒数第k个元素
- 【100题】找出链表倒数第k个元素
- leetcode 删除单链表中的倒数第k个元素
- 查找单链表倒数第k个元素
- 单链表查找倒数第k个元素
- 黑马商城项目(三)之二
- Java Reference源码分析
- Java经典算法40例(十八)
- Easyui Datagrid 根据参数设定样式
- 使用 IntelliJ IDEA写出你的第一个mapruduce应用
- 如何找出单链表中的倒数第k个元素
- 12备份和恢复数据库
- 按值传递和按引用传递的区别
- POJ 3177 Redundant Paths 笔记
- day_06C语言基础
- Android性能测试工具Emmagee介绍
- Java经典算法40例(十九)
- 布尔类型
- springboot(三):Spring boot中Redis的使用