实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值

1.今天在LeetCode练习一道单链表的题(题目如上),虽然不难,但是却极大的触动了我学习算法的兴趣。因为当你看到大神的解法时,你真的是一种兴奋的拍桌子的感觉,不禁反思为什么人家可以想到这么优秀的解法。当然希望那些和我一样的算法小白在看到这篇博客时,也能有一种好好学习算法的冲动。下面将我写的算法,与大神的算法做对比。

2.我的算法思想是:首先遍历一次单链表,得到该但单链表的长度length,之后再利用一个循环遍历到length-k处,这样就得以解决(代码如下),这种解法相当于遍历两次链表,极大的增加了时间的消耗,果不其然,时间上只击败百分之十六的提交者

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public int kthToLast(ListNode head, int k) {ListNode cur=head;if(cur.next==null){return cur.val;}int length=0;while(cur.next!=null){cur=cur.next;length++;}ListNode cur1=head;for(int i=0;i<length+1-k;i++){cur1=cur1.next;}return cur1.val;}
}

3.大神算法思想:使用两个指针,第一个指针先移动k步,然后第二个指针再从头开始,这个时候这两个指针同时移动,当第一个指针到链表的末尾的时候,返回第二个指针即可。时间消耗上击败100%的对手

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/public int kthToLast(ListNode head, int k) {ListNode first = head;ListNode second = head;//第一个指针先走k步while (k-- > 0) {first = first.next;}//然后两个指针在同时前进while (first != null) {first = first.next;second = second.next;}return second.val;}

十、分享一道LeetCode较为简单的单链表题,但是却能激发起练习算法的极大的兴趣相关推荐

  1. 每日一道leetcode(python)876. 链表的中间结点

    每日一道leetcode(python)876. 链表的中间结点 2021-08-19 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点.示例 1 ...

  2. c语言单链表的按序号查找,以下为单链表按序号查找的运算,分析算法,请在______处填上正确的语句。 pointer find_lklist(1kl...

    以下为单链表按序号查找的运算,分析算法,请在______处填上正确的语句. pointer find_lklist(1kl 更多相关问题 [单选题]Struts2框架最先加载的配置文件是: A. de ...

  3. 2019年第十六届中国研究生数学建模竞赛F题·一种快速找到最优解的算法(提供Matlab源码)

    2019年第十六届中国研究生数学建模竞赛F题·一种快速找到最优解的算法(提供Matlab源码) 目录 0. 源码+数据 1. 问题介绍 2. 贪心寻找较优解 2.1 算法步骤 2.2 源码 2.2.1 ...

  4. 不懂你打我,超简单的单链表的创建

    数据结构有人熬过了复杂度,熬过了顺序表,就卡在链表这里,其实也不难,我也是菜鸟,所以我会用通俗易懂的东西给大家解释!这里我们先实现一个单链表! 结点:有指针域和数据域 下面我们先了解一下链表的逻辑结构 ...

  5. LeetCode Insertion Sort List(单链表插入排序)

    题意:给出一个未排序好的单链表,用插入排序来实现排序 代码如下: class Solution {public ListNode insertionSortList(ListNode head){if ...

  6. java实现一个简单的单链表存放水浒传人物

    package com.tgq.linkedlist;public class SingleLinkedList {public static void main(String[] args) {Si ...

  7. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  8. 使用python建立简单的单链表

    代码 import sysclass ListNode:def __init__(self, x):self.val = xself.next = None# 将列表转换成链表 def list_to ...

  9. leetcode 160 简单难度 相交链表

    160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], li ...

最新文章

  1. javaScript Code 用javascript确定每月第二个星期五
  2. 如何快速研究透一篇 Paper 并提出有价值的问题?
  3. [ZJOI 2010]count 数字计数
  4. 杭电1203java实现
  5. CentOS6.5安装MySQL5.1.73
  6. NYOJ 330 一个简单的数学题
  7. Codeforces 1196B Odd Sum Segments
  8. python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架
  9. 从618大促看直播风口,电商玩家如何走得更远
  10. DeleteCommand属性---删除数据集指定的行保存到数据源中
  11. RocketMQ 顺序消费只消费一次 坑
  12. Android 系统(274)---Anroid5.0以上进程保活方案(亲测可自行调起被杀死的app)
  13. ASP.NET FormsAuthentication跨站点登录时绝对地址返回的问题
  14. 方舟原始恐惧mod生物代码_方舟MOD
  15. Warez 组织的64K 3D动画下载
  16. Netty + JavaFx 实战:仿桌面版微信聊天
  17. ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十二节--小结,Bootstrap Table之角色管理
  18. 利用python创建自定义的股票指数
  19. matlab标题斜体_matlab 斜体 正体
  20. 拉链表取某一天的历史快照

热门文章

  1. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...
  2. React 项目--设置根目录(8)
  3. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'rtjhyt' in 'field list'
  4. 第二十八课.AlphaGo实例分析
  5. Python 实现自动化批量重打包Android Apps
  6. Nature | 原核生物基因的生物地理学研究
  7. 植物根系微生物组的调控入选中科院科技创新亮点成果筛选
  8. 扩增子图表解读1箱线图:Alpha多样性,老板再也不操心的我文献阅读了
  9. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色)实战
  10. R语言层次聚类:通过内平方和(Within Sum of Squares, WSS)选择最优的聚类K值、以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最优的聚类个数