【问题描述】[中等]

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。
示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.

【解答思路】

1. 统计长度算位置
  • 遍历链表得链表长度num,算位置 i = num - k
  • 根据算出来的位置 重新遍历
    时间复杂度:O(N) 空间复杂度:O(1)
 public ListNode getKthFromEnd(ListNode head, int k) {ListNode cur  =head;int num=0;while(cur!=null){num++;cur = cur.next;}int i= num- k;cur  =head;while(i>0){i--;cur = cur.next;}return cur;}
2. 快慢指针/双指针


时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public ListNode getKthFromEnd(ListNode head, int k) {ListNode former = head, latter = head;for(int i = 0; i < k; i++) {if(former == null) return null;former = former.next;}while(former != null) {former = former.next;latter = latter.next;}return latter;}
}

【总结】

1. 链表经典思路 快慢指针 !
2. 注意边界 一题多解!

参考链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/solution/mian-shi-ti-22-lian-biao-zhong-dao-shu-di-kge-j-11/

[剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]相关推荐

  1. [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]

    [问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...

  2. [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

    [问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...

  3. [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]

    [问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...

  4. [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]

    [问题描述][中等] 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.示例: 给定如下二叉树,以及目标和 sum = ...

  5. [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]

    [问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...

  6. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]

    [问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...

  7. [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]

    [问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...

  8. [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]

    [问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...

  9. [剑指offer][JAVA]面试题第[64]题[求1+2+…+n][逻辑运算符]

    [问题描述][中等] 求 1+2+...+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).输入: n = 3 输出: 6 [解 ...

最新文章

  1. Spark的安装和使用
  2. RHEL5下NFS服务器配置与应用
  3. Perl中的单行凝视和多行凝视
  4. SCTF 2015 pwn试题分析
  5. PowerDNS + PowerDNS-Admin
  6. 树和而叉查找树的实现
  7. queue java 用法_Java队列(Queue)用法
  8. GridBagLayout
  9. 正交匹配追踪算法OMP
  10. 全面解析云智慧数据中心统一运管解决方案
  11. 用户体验--NPS满意度指标
  12. 不支持16位应用程序,%1和64位电脑不兼容问题
  13. 【跟我一起学Unity3D】做一个2D的90坦克大战之各种各样的墙附上项目源码
  14. PVID和VID详解
  15. Coursera 申请助学金流程和材料
  16. HTML与CSS中的文本个人分享
  17. “青山无墨千年画,流水无弦万古琴。 有人说:生活可以有底线的随心
  18. C++ accumulate
  19. 12月1日~17日技术读报
  20. 梳理STM32F429之通信传输部分---NO.3 串口空闲IDEL中断+DMA+FreeRTOS

热门文章

  1. 【100亿次的挑战】之春晚控制后台故事分享
  2. ADO.NET 3.5 Cookbook:一、连接数据(1)保存连接字符串
  3. 看看自己08年的基金是否能赚钱
  4. oracle索引使用例子,Oracle中利用函数索引处理数据倾斜案例
  5. Python爬虫自学之第(⑤)篇——爬取某宝商品信息
  6. centos7 python3.6编译安装
  7. android添加商品到购物车,Android使用动画动态添加商品进购物车
  8. 实现拓扑图_20源码实现【自动寻路】 —【拓扑图】—网游城市互传最优路径算....
  9. JAVA8后接口的新特性
  10. 03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?