[剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]
【问题描述】[中等]
输入一个链表,输出该链表中倒数第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][双指针][快慢指针]相关推荐
- [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]
[问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...
- [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]
[问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...
- [剑指offer][JAVA]面试题第[39]题[数组中出现次数超过一半的数字][HashMap][摩尔投票法]
[问题描述][简单] 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.你可以假设数组是非空的,并且给定的数组总是存在多数元素.示例 1:输入: [1, 2, 3, 2, 2, 2, 5, ...
- [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]
[问题描述][中等] 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.示例: 给定如下二叉树,以及目标和 sum = ...
- [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]
[问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...
- [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]
[问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...
- [剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]
[问题描述][中等] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回: ...
- [剑指offer][JAVA]面试题第[30]题[包含min函数的栈][双栈辅助栈][单栈]
[问题描述][中等] 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1).示例:MinStack min ...
- [剑指offer][JAVA]面试题第[64]题[求1+2+…+n][逻辑运算符]
[问题描述][中等] 求 1+2+...+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).输入: n = 3 输出: 6 [解 ...
最新文章
- Spark的安装和使用
- RHEL5下NFS服务器配置与应用
- Perl中的单行凝视和多行凝视
- SCTF 2015 pwn试题分析
- PowerDNS + PowerDNS-Admin
- 树和而叉查找树的实现
- queue java 用法_Java队列(Queue)用法
- GridBagLayout
- 正交匹配追踪算法OMP
- 全面解析云智慧数据中心统一运管解决方案
- 用户体验--NPS满意度指标
- 不支持16位应用程序,%1和64位电脑不兼容问题
- 【跟我一起学Unity3D】做一个2D的90坦克大战之各种各样的墙附上项目源码
- PVID和VID详解
- Coursera 申请助学金流程和材料
- HTML与CSS中的文本个人分享
- “青山无墨千年画,流水无弦万古琴。
有人说:生活可以有底线的随心
- C++ accumulate
- 12月1日~17日技术读报
- 梳理STM32F429之通信传输部分---NO.3 串口空闲IDEL中断+DMA+FreeRTOS
热门文章
- 【100亿次的挑战】之春晚控制后台故事分享
- ADO.NET 3.5 Cookbook:一、连接数据(1)保存连接字符串
- 看看自己08年的基金是否能赚钱
- oracle索引使用例子,Oracle中利用函数索引处理数据倾斜案例
- Python爬虫自学之第(⑤)篇——爬取某宝商品信息
- centos7 python3.6编译安装
- android添加商品到购物车,Android使用动画动态添加商品进购物车
- 实现拓扑图_20源码实现【自动寻路】 —【拓扑图】—网游城市互传最优路径算....
- JAVA8后接口的新特性
- 03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?