【链表】剑指offer 22. 链表中倒数最后k个结点

2023-05-16

题目

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,输出一个链表,该输出链表包含原链表中从倒数第 k 个结点至尾节点的全部节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。

数据范围: 0 < n < 1 0 5 0 < n <10^5 0<n<105 0 ≤ a i ≤ 1 0 9 0 \leq a_i \leq 10^9 0ai109 0 ≤ k ≤ 1 0 9 0 \leq k \leq 10^9 0k109

要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
示例1

输入:
{1,2,3,4,5},3
返回值:
{3,4,5}

示例2

输入:
{2},8
返回值:
{}

方法

baseline

最简单的方法,先遍历一遍链表,统计链表元素个数n,然后再遍历一次链表,返回n-k位置的指针。

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param pHead ListNode类
     * @param k     int整型
     * @return ListNode类
     */
    public ListNode FindKthToTail(ListNode pHead, int k) {
        // write code here
        ListNode tmp = pHead;
        int count = 0; // 统计链表的长度
        while (true) {
            if (tmp != null) {
                count++;
                tmp = tmp.next;
            } else
                break;
        }
        if (k > count)
            return null;
        tmp = pHead;
        for (int i = 0; i < count - k; i++)
            tmp = tmp.next;
        return tmp;
    }
}

快慢指针法

使用两个指针fastslow,先让fastk步,然后fastslow一起往后走,直到fast到达尾部,此时slow就处于倒数第k个位置,直接返回slow即可。

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param pHead ListNode类
     * @param k     int整型
     * @return ListNode类
     */
    public ListNode FindKthToTail(ListNode pHead, int k) {
        ListNode fast = pHead;
        ListNode slow = pHead;
        for (int i = 0; i < k; i++) {
            if (fast != null) fast = fast.next;
            else return null;
        }
        while (true) {
            if (fast != null) {
                fast = fast.next;
                slow = slow.next;
            } else break;
        }
        return slow;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【链表】剑指offer 22. 链表中倒数最后k个结点 的相关文章

  • 剑指offer—03

    剑指 Offer 03 数组中重复的数字 找出数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0 xff5e n 1 的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字重复了 xff0c 也不知道每个数
  • 通关剑指 Offer——剑指 Offer II 055. 二叉搜索树迭代器

    1 题目描述 剑指 Offer II 055 二叉搜索树迭代器 实现一个二叉搜索树迭代器类BSTIterator xff0c 表示一个按中序遍历二叉搜索树 xff08 BST xff09 的迭代器 xff1a BSTIterator Tre
  • 剑指 Offer 03. 数组中重复的数字--详解

    找出数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0 xff5e n 1 的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字重复了 xff0c 也不知道每个数字重复了几次 请找出数组中任意一个重复的数
  • 剑指 Offer 03. 数组中重复的数字

    https leetcode cn com problems shu zu zhong zhong fu de shu zi lcof span class token keyword class span span class token
  • [剑指offer] 连续子数组最大和

    题目 xff1a 对于一个有正有负的整数数组 xff0c 请找出总和最大的连续数列 给定一个 span class hljs keyword int span 数组A和数组大小n xff0c 请返回最大的连续数列的和 1 思路 xff1a
  • 【剑指Offer】题3:数组中重复的数字

    写在前面的话 xff1a 版权声明 xff1a 本文为博主原创文章 xff0c 转载请注明出处 xff01 博主是一个小菜鸟 xff0c 并且非常玻璃心 xff01 如果文中有什么问题 xff0c 请友好地指出来 xff0c 博主查证后会进
  • 【链表】剑指offer 22. 链表中倒数最后k个结点

    题目 输入一个长度为 n 的链表 xff0c 设链表中的元素的值为 ai xff0c 输出一个链表 xff0c 该输出链表包含原链表中从倒数第 k 个结点至尾节点的全部节点 如果该链表长度小于k xff0c 请返回一个长度为 0 的链表 数
  • 【剑指offer】二叉搜索树的第k个节点

    利用二叉搜索树的特点 xff0c 左边节点的值 lt 中间节点的值 lt 右边节点的值 xff0c 对二叉树进行中序遍历即可 通过res保存值 xff0c count记录遍历了多少个 中序遍历是在中间输出节点 xff0c 所以count在中
  • 刷完 LeetCode 是什么水平?能拿到什么水平的 offer?

    链接 xff1a https www zhihu com question 32019460 编辑 xff1a 深度学习与计算机视觉 声明 xff1a 仅做学术分享 xff0c 侵删 刷题是我们一贯的学习方式 xff0c 但是学霸和学渣的区
  • 剑指 Offer 59 - II. 队列的最大值

    剑指 Offer 59 II 队列的最大值 请定义一个队列并实现函数 max value 得到队列里的最大值 xff0c 要求函数max value push back 和 pop front 的均摊时间复杂度都是O 1 若队列为空 xff
  • day7: 剑指 Offer 44. 数字序列中某一位的数字

    1 剑指 Offer 44 数字序列中某一位的数字 数字以0123456789101112131415 的格式序列化到一个字符序列中 在这个序列中 xff0c 第5位 xff08 从下标0开始计数 xff09 是5 xff0c 第13位是1
  • 我只是把握好了这3点,1个月后成功拿下大厂offer!

    目录 一 写在前面二 技术广度的快速准备三 技术深度的快速准备四 基础功底的快速准备五 下篇预告 一 写在前面 春节过后 xff0c 即将迎来的是一年一度的金三银四跳槽季 假如你准备在金三银四跳槽的话 xff0c 那么作为一个Java工程师
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列

    题目描述 xff1a 输入一个整数数组 xff0c 判断该数组是不是某二叉搜索树的后序遍历结果 如果是则返回 true xff0c 否则返回 false 假设输入的数组的任意两个数字都互不相同 参考以下这颗二叉搜索树 xff1a 5 2 6
  • 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍

    点击上方蓝色字体 xff0c 关注我 一个在阿里云打工的清华学渣 图by 石头 64 长白山 关于作者 xff1a 程序猿石头 ID tangleithu xff0c 现任阿里巴巴技术专家 xff0c 清华学渣 xff0c 前大疆后端 Le
  • 剑指offer T8跳台阶

    由推导可知 xff0c 递推公式为 f n 61 f n 1 43 f n 2 迭代法 xff1a 递归 xff1a 递归优化 xff08 保存结果 xff0c 剪枝 xff09 xff1a 转载于 https www cnblogs co
  • 【LeetCode】剑指 Offer 60. n个骰子的点数 p294 -- Java Version

    题目链接 xff1a https leetcode cn problems nge tou zi de dian shu lcof 1 题目介绍 xff08 60 n个骰子的点数 xff09 把n个骰子扔在地上 xff0c 所有骰子朝上一面
  • 【LeetCode】剑指 Offer 67. 把字符串转换成整数 p318 -- Java Version

    题目链接 xff1a https leetcode cn problems ba zi fu chuan zhuan huan cheng zheng shu lcof 1 题目介绍 xff08 67 把字符串转换成整数 xff09 写一个
  • 【LeetCode】剑指 Offer 68. 二叉树中两个节点的最低公共祖先 p326 -- Java Version

    1 题目介绍 xff08 68 二叉树中两个节点的最低公共祖先 xff09 面试题68 xff1a 二叉树中两个节点的最低公共祖先 xff0c 一共分为两小题 xff1a 题目一 xff1a 二叉搜索树的最近公共祖先题目二 xff1a 二叉
  • python 坐标移动

    题目描述 开发一个坐标计算工具 A表示向左移动 D表示向右移动 W表示向上移动 S表示向下移动 从 0 0 点开始移动 从输入字符串里面读取一些坐标 并将最终输入结果输出到输出文件里面 输入 合法坐标为A 或者D或者W或者S 数字 两位以内
  • 成为大厂offer收割机是怎样一种体验?

    一 现状 市场红利正盛 人才短板暴露 计算机的发展历程已经走过了大半个世纪 在当前的互联网 时代下 中国开发者市场正在迎来三大红利 全民编程 行业升级 技术大生态 人人都会编程 家家都是技术公司 全行业数字化升级 面对大量的需求 目前IT人

随机推荐

  • pytorch计算模型参数量

    total span class token operator 61 span span class token builtin sum span span class token punctuation span span class t
  • 【字符串】把字符串转换成整数

    题目描述 将一个字符串转换成一个整数 xff0c 要求不能使用字符串转换整数的库函数 数值为0或者字符串不是一个合法的数值则返回0 输入描述 输入一个字符串 包括数字字母符号 可以为空 返回值描述 如果是合法的数值表达则返回该数字 xff0
  • 【树】二叉树的镜像

    题目描述 操作给定的二叉树 xff0c 将其变换为源二叉树的镜像 思路很简单 xff0c 只需要递归遍历树 xff0c 然后将每个节点的左右子树调换即可 span class token keyword import span java s
  • 【树】树的子结构

    来自剑指offer 这题有点难度 xff0c 解题思想是 xff1a 若B是A的子树 xff0c 则子树的根节点可能为树A中的任意一个节点 xff0c 因此只需要遍历树A的每个节点 xff0c 判断以这个节点为根节点的树是否包含子树B xf
  • Docker 网络

    1 简介 容器网络实质上是由 Docker 为应用程序所创造的虚拟环境的一部分 xff0c 它能让应用从宿主机操作系统的网络环境中独立出来 xff0c 形成容器自有的网络设备 IP 协议栈 端口套接字 IP 路由表 防火墙等与网络相关的模块
  • Ubuntu 20安装Nvidia驱动 + cuda10.1 + Anaconda + pytorch 1.5

    安装Nvidia驱动 输入命令 ubuntu drivers devices查看显卡推荐的驱动选择recommend的版本进行安装 xff0c 例如我的是460 sudo apt install nvidia driver 460 安装完成
  • VScode ssh远程服务器解决试图写入的管道不存在

    解决方案 xff0c 在C盘用户目录下找到 ssh文件 xff0c 删除known hosts文件或打开known hosts删除对应的ip
  • S3DIS场景点云数据集

    S3DIS是常用的室内场景分割数据集 xff0c 包含6个Area xff0c 常用的数据格式如下 xff1a Stanford3dDataset v1 2 Aligned Version xff0c 百度网盘下载 xff0c 提取码0ac
  • jupyter远程连接服务器

    服务器终端输入命令 jupyter notebook no browser port 61 8889 本地终端输入命令 ssh N f L localhost 8888 localhost 8889 username 64 ip usern
  • win10远程Linux桌面

    在Linux服务器安装xrdp xff1a sudo apt install xrdp win10远程 xff0c win 43 R xff0c 输入mstsc xff0c 输入linux服务器ip和账户 具体参考 https www ma
  • python控制输出精度

    a span class token operator 61 span span class token number 3 1456 span b span class token operator 61 span span class t
  • 多分类混淆矩阵的理解

    借用其它博客的一张例子示意图 xff0c 该图为一个三分类问题的混淆矩阵 xff0c 对角线的值表示分类器对该类别预测正确的个数 xff0c 每一列纵轴表示这个类别真实的样本数 xff0c 例如从第一列可以得知猫一共有10 43 3 43
  • ERROR: Could not find a version that satisfies the requirement dateutil

    安装dateutil出错 xff0c 提示 ERROR Could not find a version that satisfies the requirement dateutil 解决办法 xff1a pip install pyth
  • RTX3090 + cuda 11.1 + torch1.9.0 安装 MinkowskiEngine

    创建conda环境 conda create n mink span class token assign left variable python span span class token operator 61 span span c
  • pytorch更新tensor中指定index位置的值scatter_add_

    使用scatter add 更新tensor张量中指定index位置的值 例子 span class token keyword import span torch a span class token operator 61 span t
  • Docker 私有仓库

    1 Registry 官方私有仓库 xff0c 优点 xff1a 简单 xff1b 缺点 xff1a 部署无法进行复杂的管理操作 1 1 镜像 docker pull registry 2 7 1 docker pull joxit doc
  • pytorch one-hot编码

    使用scatter 将标签转换为one hot span class token keyword import span torch num class span class token operator 61 span span clas
  • python安装meshplot

    用conda或者pip直接安装如果出问题 xff0c 可以考虑使用以下方法 xff0c 从代码仓库中安装 下载代码库 span class token function git span clone https github com sko
  • python matplotlib quiver

    matplotlib中的 quiver方法可用于绘制箭头 xff08 向量 xff09 xff0c 下面介绍二维和三维中的使用方法 二维箭头向量绘制 一般参数如下 quiver span class token punctuation sp
  • 【链表】剑指offer 22. 链表中倒数最后k个结点

    题目 输入一个长度为 n 的链表 xff0c 设链表中的元素的值为 ai xff0c 输出一个链表 xff0c 该输出链表包含原链表中从倒数第 k 个结点至尾节点的全部节点 如果该链表长度小于k xff0c 请返回一个长度为 0 的链表 数