找出单链表中的倒数第k个元素
来源:互联网 发布:端口号的目的是 编辑:程序博客网 时间:2024/05/29 16:22
解题思路:
1.为了求出链表中的倒数第k个元素,最容易想到的方法是首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为正数第n-k个,接下去遍历一次就可以得到结果。不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-k个元素。
如果沿从头至尾的方向从链表中的某个元素开始,遍历k个元素刚好到达链表尾,那么元素就是要找的倒数第k个元素。设计如下:依次对链表的每一个结点元素进行这样的测试,遍历k个元素,查看是否到达链表尾,直到找到那个倒数第k个元素。此种方法将对同一批元素进行反复多次的遍历,对于链表的大部分元素而言,都要遍历k个元素,如果链表长度为n,则该算法时间复杂度为O(kn)级,效率太低。
2.存在另一种更高效的方法。在查找过程中,设置两个指针,让其中一个指针比另一个指针先前移k-1步,然后两个指针同时往前移动。循环直到先行的指针指为NULL时,另一个指针所指的位置就是所要找的位置
public Node findElem(Node head,int k){ if(k<1 || head == null) { return null; } Node p1 = head; Node p2 = head; for (int i = 0; i < k - 1; i++) { //前移k-1步 if(p1.next != null){ p1 = p1.next; }else { return null; } } while (p1 != null) { p1 = p1.next; p2 = p2.next; } return p2; }
阅读全文
0 0
- 如何找出单链表中的倒数第k个元素
- 一次遍历找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第K个元素
- 如何找出单链表中的倒数第k个元素
- 如何找出单链表中的倒数第k个元素
- 找出单链表中的倒数第k个元素
- Java:如何找出单链表中的倒数第k个元素
- 找出单链表中倒数第 k 个元素
- 找出单链表的倒数第k个元素
- 如何找出单链表中的倒数第k个元素-----思路分析
- 程序员面试题目总结--链表(2)【找出单链表中的倒数第K个元素】
- [算法]找出单链表中的倒数第k个元素
- [算法]找出单链表中的倒数第k个元素
- 【100题】找出链表倒数第k个元素
- leetcode 删除单链表中的倒数第k个元素
- 查找单链表倒数第k个元素
- 单链表查找倒数第k个元素
- September English summary
- Docker中安装Centos6
- HTTP Status 404-no result defined for action com.huida.action.LinkManAction and result input
- 【Java】——list中快速进行数据筛选
- 读书笔记-《Java NIO》:第二章 缓冲区(1)
- 找出单链表中的倒数第k个元素
- Tensorflow-save model
- matplotlib.pyplot绘图显示控制
- 一个标准的PID算法
- 素数打表
- python-pip python-dev build-essential无法安装E: Unable to correct problems, you have held broken package
- 机器视觉光源的选型要领
- HttpServletRequest中读取HTTP请求的body
- windows重绘机制原理