输入一个链表,输出该链表中倒数第k个结点。

2023-05-16

输入一个链表,输出该链表中倒数第k个结点。

 

思路1:一次循环得到节点的个数,然后使用节点的个数减去倒数的k,就得到了正数的第count-k个,返回这个节点就可以了。

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==NULL || k <= 0)
        {
            return nullptr;
        }
        ListNode* pList1=pListHead;
        int count=0;
        int index=0;
        while(pList1 != NULL)
        {
            count++;//记录链表节点的个数
            pList1=pList1->next;
        }
        if(count > k)//
        {
            index = count-k;//找到倒数第K个节点
        }
        
        pList1=pListHead;
        while(index)
        {
            pList1=pList1->next;
            index--;
        }
        if(count > k)
        {
            return nullptr;
        }
        cout<<pList1->val;
        return pList1;
    }
    
};

不通过

您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为16.67%

上面的程序有点问题,需要后续再改

 

思路二:使用跟随指针

一开始两个指针p1和p2都指向头结点,

让p1向前走k-1个节点,然后p2开始跟着p1向后跑

等p1跑到最后一个节点时,p2正好在倒数第K个节点处。

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==NULL || k <= 0)
        {
            return nullptr;
        }
        int count=0;
        int a=k;
        ListNode* pList1=pListHead;
        ListNode* pList2=pListHead;
        while(pList1 != NULL)
        {
            
            pList1 = pList1->next;
            if(k<1)
            {
                pList2=pList2->next;
            }
            count++;
            if(k>0)
            {
                k--;
            }
        }
        if(count<a)
            return nullptr;
        return pList2;
    }
    
};

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

输入一个链表,输出该链表中倒数第k个结点。 的相关文章

  • bootloader协议制定开发感悟

    制订协议最好是能站在巨人的肩膀上 xff0c 这样能节省时间 xff0c 心里也更加有谱 自己制定协议很容易被细节带偏 对于较为复杂得的协议 xff0c 整个框架一定要清晰
  • STM32不能跑程序,Keil软件中debug出现 cannot access memory

    使用stm32f40X时 xff0c 通过ST LINK下载程序后 xff0c 发现GPIO引脚电压乱跳 xff0c debug过程发现keil软件弹出cannot access memory 在下载程序过程中 xff0c keil提示 将
  • python:这种错误的原因和解决方法 "NameError:name 'self' is not defined?"

    class A def init self a self a 61 a def p self b 61 self a print b 在学习的时候 xff0c 写了以上代码 xff0c 报了如下的错误 NameError name 39 s
  • Ubuntu系统用VNCViewer连不上远程的解决办法

    有时Ubuntu重启电脑重新联网之后 xff0c 用VNCViewer远程时提示timeout 解决办法 点击Ubuntu电脑系统的设置按钮 xff0c 进入共享选项卡 检查远程登录是不是已经开启 xff0c 屏幕共享是不是活动状态 屏幕共
  • STM32串口DMA方式发送数据

    文章目录 一 DMA介绍1 概括2 DMA由来2 1程序传送方式2 2中断传送方式2 3DMA原理 3 DMA具有的功能4 DMA传输方式5 DMA主要特征6 DMA处理7 DMA工作框图8 DMA工作传送过程 二 串口DMA方式发送数据1
  • 每日一练20210629

    1 下列叙述中正确的是 2021 06 29 21 59 14 A 算法的效率只与问题的规模有关 而与数据的存储无关B 算法的时间复杂度是指执行算法所需要的计算工作量C 数据的逻辑结构与存储结构是一一对应的D 算法的时间复杂度与空间复杂度一
  • Aborted (core dumped)

    在百度谷歌了无数次之后 xff0c 看了许多关于Aborted xff08 core dumped xff09 的解决方法后 xff0c 终于找到一个解决办法 文章来自 http blog 163 com wujiaxing009 64 1
  • slam开发心得

    slam是目前比较流行 xff0c 并且是门槛较高的一个领域 xff0c 它与人工智能紧密相关 自己想就这篇博客谈谈自己在这个领域2年多来的心得 回顾这2年来自己的学习过程 xff0c 可以说是艰辛 xff0c 自己不是搞软件开发的 xff
  • STM32基于FreeRTOS的多任务程序

    STM32基于FreeRTOS的多任务程序 任务要求FreeRTOS移植介绍应用 总结 任务要求 在STM32下完成一个基于FreeRTOS的多任务程序 xff0c 执行3个周期性task task1 xff0c 每间隔500ms闪烁 xf
  • conio包含的函数及作用

    conio h是TC特有的 xff0c 用于输入输出图形方面 conio h conio h不是C标准库中的头文件 conio是Console Input Output xff08 控制台输入输出 xff09 的简写 xff0c 其中定义了
  • 有关调音台的专业英文词汇

    一 2 Track 2轨磁带 xff08 in输入 out输出 xff09 AFL 61 After fader Listen 衰减后监听 xff08 推子后监听 xff09 xff0c 这个模式下 xff0c 监听输出的信号是来自于通道电
  • 各行业的英语术语(绝对精华 2)

    实用食品用语2 b 餐具 coffee pot 咖啡壶 coffee cup 咖啡杯 paper towel 纸巾 napkin 餐巾 table cloth 桌布 tea pot 茶壶 tea set 茶具 tea tray 茶盘 cad
  • 各行业的英语术语(绝对精华3)

    b 企业缩写词 b 5S管理 ABC 作業制成本制度 Activity Based Costing ABB 實施作業制預算制度 Activity Based Budgeting ABM 作業制成本管理 Activity Base Manag
  • 各行业的英语术语(绝对精华4)--房地产

    b 房地产英语1 b 房地产英语 part 1 English for Real Estate 入世以后 xff0c 跨国房地产交易越来越多 xff0c 涉外交易动辄千百万 xff1b 地道 准确 符合国际惯例的房地产英语无疑是促成交易 避
  • ROS学习笔记6(理解ROS话题)

    文章目录 1 启动1 1 roscore1 2 turtlesim1 3 turtel teleop key 2 ROS 话题2 1 使用rqt graph2 2 使用rostopic2 3 使用rostopic echo2 4 使用ros
  • Labview 子VI 生成Library Files

    建立 Lib 文件的方法 一个简单的方法可以让你封装所有的VI到LabVIEW的llb里面 执行下面的步骤即可 LabVIEW 8 x 1 到 File Save As 将打开一个另存为对话框窗口 2 选择 将层次结构复制到新位置 3 选择
  • Python爬虫——BeautifulSoup的基本使用

    Python爬虫 BeautifulSoup的基本使用 安装beautifulsoup4模块 pip span class token function install span beautifulsoup4 1 创建BeautifulSo
  • ubuntu下安装高版本clang-format

    问题 ubuntu 16 04版本没有clang format 9以上版本源 但较低版本的工具对一些格式化配置符号不支持 使用deb文件安装高版本的话要更新的依赖太多 系统依赖 xff0c 诸如libs libstsc 43 43 等 解决
  • ST-LINK 连接图

    stm32 JTAG 管脚 ST LINK V2 JTAG 管脚 JTAG 连接模式 TVCC xff08 1 xff09 STM32 3 3V xff1b 必须连接 ST LINK根据此调整输出电平 TRST xff08 3 xff09

随机推荐

  • 如何给金溢RSU配路网

    如何给RSU配路网 一 路网数据采集 xff1a 利用车载单元OBU的GPS定位模块在特定的路段 xff0c 选取两个点 xff0c 一个设定为起点 xff0c 一个终点 xff08 一般大概300 400米左右 xff09 中间不能有实体
  • Linux之read命令使用

    read命令 xff1a read 命令从标准输入中读取一行 xff0c 并把输入行的每个字段的值指定给 shell 变量 1 xff09 read后面的变量var可以只有一个 xff0c 也可以有多个 xff0c 这时如果输入多个数据 x
  • shell脚本中 “set -e” 的作用

    bin bash set e command 1 command 2 exit 0 你写的每个脚本都应该在文件开头加上set e 这句语句告诉bash如果任何语句的执行结果不是true则应该退出 这样的好处是防止错误像滚雪球般变大导致一个致
  • strcpy的使用

    include lt iostream gt include lt string h gt using namespace std int main char data 61 34 dhewdwehkfew qwdhqwhdj qwhdwq
  • 算法复杂度时间的体现举例

    1 1 1 1 1 1 n 这个样的数列相加 xff0c 不同的算法的复杂度对比 可以学习时间怎么用 include lt iostream gt include lt cmath gt include lt ctime gt using
  • RS232 串口通信接口和代码实现红绿灯控制

    1 东西方向红灯 xff1b 2 东西方向黄灯 xff1b 3 东西方向绿灯 xff1b 4 避开发送 0x0A的底层却发送0x0D 0x0A问题 5 南北方向红灯 xff1b 6 南北方向黄灯 xff1b 7 南北方向绿灯 https b
  • apache中Options Indexes FollowSymLinks详解

    Indexes 显示一个目录下面的文件夹和文件 要禁止 Apache 显示目录结构列表 xff0c 只需将 Option 中的 Indexes 去掉即可 在Options Indexes FollowSymLinks在Indexes前面加上
  • 卸载 vmware-tools.pl和安装 vmware-tools.pl失败了,谁能解?

    v2x 64 ubuntu Desktop vmware tools distrib ls bin caf doc etc FILES INSTALL installer lib vgauth vmware install pl v2x 6
  • shell脚本$0 $1 $2 $* $@ $# 变量学习记录

    bin bash this program is use 0 and so on echo 34 THe script name is 61 61 gt 0 34 echo 34 The total parameter number is
  • c++ 11/14新特性

    C 43 43 11 新增特性 1 自动类型推导 61 61 61 61 gt auto int main1 auto a 61 10 a 是 int 类型 auto d 61 1 2 d 是 double 类型 auto f 61 2 3
  • 数据结构常见问题和概念

    1 数组和链表的区别 从逻辑结构上来看 xff0c 数组必须实现定于固定的长度 xff0c 不能适应数据动态增减的情况 xff0c 即数组的大小一旦定义就不能改变 当数据增加是 xff0c 可能超过原先定义的元素的个数 xff1b 当数据减
  • 常量指针与指针常量,函数指针与指针函数

    1 常量指针 xff1a 本质是一个指针 xff0c 表示一个指向常量的指针 const int p 能够改变指针的指向 xff0c 但不能改变指针所指对象的值 int a 61 0 b 61 1 const int p 61 amp a
  • GDB调试入门----编程珠玑

    GDB是GUN发布的一款功能强大的程序调试工具 GDB主要完成下面三个方面的功能 xff1a 1 启动被调试程序 2 让被调试程序在指定的位置停住 3 当程序被停住时 xff0c 可以检查程序状态 xff08 变量值等 xff09 总览 本
  • AMD面试小结

    关于git如何使用 关于GDB调试如何使用 关于多线程编程 关于用户态和内核态 xff1f 关于openGL 关于voiltale你用过没 xff1f volatile表示对象的值可能在程序的控制或检测之外被改变 xff0c 并告诉编译器不
  • UClode 互联网公司面试

    面试的岗位是sql内核开发 1 写一个1 2 3 4 5数字做全排列的输出程序 思想是如果只有两个数字那么只有两种排列1 2和2 1 先固定一个数 xff0c 后面就是4个数做全排列 xff0c 要是把4个数的第一个数固定 xff0c 就是
  • 刷题c++ 思考

    1 有一个vector数组 xff0c 要从中去掉一个数 xff0c 使的这个数组中的数的连乘积最大 xff0c 返回这个数的下标 xff08 数组中可能有正数 xff0c 负数 xff0c 0 xff09 int getMax xff08
  • ubuntu 20.04环境下ROS+PX4+RPG ROS DVS+DV-gui 安装

    ROS安装 使用鱼香ros的一键安装指令 xff1a wget http fishros com install O fishros amp amp fishros 分别选择 xff1a 1 会同时完成换源和安装 3 作用如图所示 4 如上
  • 数据结构 二叉树的建立与遍历

    https blog csdn net qq 37043100 article details 80171535
  • 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则

    题目描述 输入两个单调递增的链表 xff0c 输出两个链表合成后的链表 xff0c 当然我们需要合成后的链表满足单调不减规则 struct ListNode int val struct ListNode next ListNode int
  • 输入一个链表,输出该链表中倒数第k个结点。

    输入一个链表 xff0c 输出该链表中倒数第k个结点 思路1 xff1a 一次循环得到节点的个数 xff0c 然后使用节点的个数减去倒数的k xff0c 就得到了正数的第count k个 xff0c 返回这个节点就可以了 struct Li