HJ51 输出单向链表中倒数第k个结点
写在前面:
做题环境如下:
题目渠道:牛客网 HJ51 输出单向链表中倒数第k个结点 华为机试题
编程语言:C++
一、题目描述
描述
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{int m_nKey;ListNode* m_pNext;
};
正常返回倒数第k个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足 [1,1000],链表中数据满足 [0,10000]
输入描述:
输入说明
1 输入链表结点个数
2 输入链表的值
3 输入k的值
输出描述:
输出一个整数
示例1
输入:
8
1 2 3 4 5 6 7 8
4
输出
5
说明:本题有多组样例输入。
二、题目分析&解题思路
2.1 处理好输入
牛客网与leetCode 不同,牛客 需要自己处理好输入,构建输入环境,而这里题目给出了单链表节点类型的写法,那么如果再使用 容器 list 那么就有点没意思了,因此需要自己逐个添加节点,设置节点值、下一个节点指针等,这里需要注意 本题有多组样例输入 那么说明我们需要把我们的代码写在一个 while 循环里,供测试用例循环输入:
int number;while (cin >> number) {//循环测试用例输入ListNode* head = new ListNode();//头节点ListNode* next = new ListNode();bool bflag = true;while (number > 0) {int val;cin >> val;ListNode* nodeTemp = new ListNode();//构建每一个节点nodeTemp->m_nKey = val;nodeTemp->m_pNext = nullptr;if (bflag) {head = nodeTemp;//先将头节点保存next = head;bflag = false;} else {next->m_pNext = nodeTemp;//逐个链接起来next = next->m_pNext;}--number;}int key;cin >> key;getReversKeyNode(head, key);}
2.2 处理输出
也就是实现将倒数第 K 个节点值输出,这里直接遍历所有的节点,保存到一个 vector 中,直接根据K 计算出节点下标,输出即可,代码复杂度为 O(n)
void getReversKeyNode(ListNode* head, int key) {vector<ListNode*> vctTemp;while (head != nullptr) {vctTemp.push_back(head);head = head->m_pNext;}if (vctTemp.size() > 0) {if (key <= vctTemp.size() && key >= 0 ) {cout << vctTemp[vctTemp.size() - key]->m_nKey << endl;//计算下标} else {cout << "error" << endl;}}
}
三、代码实现
#include <iostream>
#include <vector>
using namespace std;
typedef struct ListNode {int m_nKey;ListNode* m_pNext;
} ListNode;
void getReversKeyNode(ListNode* head, int key) {vector<ListNode*> vctTemp;while (head != nullptr) {vctTemp.push_back(head);head = head->m_pNext;}if (vctTemp.size() > 0) {if (key <= vctTemp.size() && key >= 0 ) {cout << vctTemp[vctTemp.size() - key]->m_nKey << endl;//计算下标} else {cout << "error" << endl;}}else{cout<<"error<<endl;}
}
int main() {int number;while (cin >> number) {//循环用例输入ListNode* head = new ListNode();//头节点ListNode* next = new ListNode();bool bflag = true;while (number > 0) {int val;cin >> val;ListNode* nodeTemp = new ListNode();//构建每一个节点nodeTemp->m_nKey = val;nodeTemp->m_pNext = nullptr;if (bflag) {head = nodeTemp;//设置头节点next = head;bflag = false;} else {next->m_pNext = nodeTemp;//链接每一个节点next = next->m_pNext;}--number;}int key;cin >> key;getReversKeyNode(head, key);}}
运行结果:

相关文章:
HJ51 输出单向链表中倒数第k个结点
写在前面: 做题环境如下: 题目渠道:牛客网 HJ51 输出单向链表中倒数第k个结点 华为机试题 编程语言:C 一、题目描述 描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针…...
c#笔记-内置类型
内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级,可以让你在没有别的配置的情况下, 只要用的是c#就可以使用。这也意味着这些类型是非常重要,或是基本的东西。 整数:byte, sbyte, short, ushort, int, ui…...
功能齐全的 DIY ESP32 智能手表设计之原理图讲解一
相关设计资料下载ESP32 智能手表带心率、指南针设计资料(包含Arduino源码+原理图+Gerber+3D文件).zip 目录 USB部分原理图讲解 供电部分原理图讲解 USB转串口原理图讲解...
8年测试经验分享,15K的测试工程师需要掌握那些知识?
软件测试行业是随着软件产业的发展而兴起的一个重要领域,目前处于快速发展阶段。以下是软件测试行业的现状: 人才需求增长:随着互联网、移动互联网、物联网等新技术的不断发展,软件测试人才需求呈现出快速增长的趋势。越来越多的…...
利用通信基础设施提高电网的稳态稳定性(Matlab代码实现)
目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 Matlab代码 1 概述 随着电力系统的复杂性和规模的增加,电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略,该策略基于通过通信基础设施获得的…...
MySQL 一条SQL语句是如何执行的?
总览 所以今天我们把MySQL拆解一下,看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说,MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能&am…...
plt.imshow 全黑解决办法
# 标签有时候数据偏小,需要给赋予其他颜色方便可视化 image_file "/root/autodl-tmp/datasets/consep/labels/train/000.png"classes (background,Epithelial, Inflammatory, Spindle-Shaped, Miscellaneous) palette [[0, 0, 0], [129, 127, 38], [12…...
有趣的地理题
题目 总部位于上海的“哔哩哔哩”(简称B站),是国内知名的视频网站。在B站投稿的用户被称为“UP主”。据统计,B站的UP主群体中,来自上海的比例最高,200万粉丝以上的UP主,来自上海的比例超过 30 …...
DD驱动鼠标键盘(驱动级别机器人使用鼠标键盘)
官网下载 DD虚拟键盘虚拟鼠标 github下载 GitHub - ddxoft/master 点击下载后,将驱动包下,这里以win7为例 setup运行安装 安装成功后 可以打开电脑管理,可以看见DD虚拟鼠标和键盘 这里以JAVA接入为例 使用管理员权限启动eclipse &#…...
每日学术速递4.30
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Masked Frequency Modeling for Self-Supervised Visual Pre-Training(ICLR 2023) 标题:用于自监督视觉预训练的掩蔽频率建模 作者:Jiahao Xie, Wei Li, Xi…...
K8S部署及常见问题处理
目录 k8s kubeadm 一键自动化,安装k8s集群,安装所有运行需要的组件 一、环境初始化(三台机器都需要执行) 主机名、节点ip、部署组件 1、配置hosts(主节点master和业务节点node都需要配置)文件内容 2、…...
通过Robotstudio修改机器人程序的具体方法和步骤
通过Robotstudio修改机器人程序的具体方法和步骤 基本步骤可参考以下内容: 用网线连接机器人和电脑,机器人一侧要插入LAN2口;机器人和电脑的IP地址要在同一个网段内;请求写入权限;修改程序—编译—应用;加载修改后的程序到机器人;保存Robotstudio程序到电脑端;只能修改…...
第40讲:Python for-in循环语句使用索引遍历序列
文章目录 方法一:遍历的是序列的元素方法二:遍历的是序列的索引方法三:while循环遍历实现方法四:调用内置函数enumerate实现1.什么是enumerate函数2.调用内置函数enumerate实现索引遍历序列 如果在遍历序列的过程中,需…...
如何用Jmeter压测Netty的Echo服务之自定义Jmeter的Java Sampler
前言 如果想要压测一些三方组件,比如MQ,redis什么的,jmeter本身是不支持的。 本文以开发一个压测netty的echo示例,说明如何自定义jmeter的sampler。 开发 本文以idea示例, 新建工程 打开idea新建一个空的maven工程…...
GPT3.5之运用之检查模型是否满足条件
策略三:要求模型检查是否满足条件* 如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。你还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错误或结果。 在如…...
【TCP为什么需要粘包和拆包】
如今,大半个互联网都建立在 TCP 协议之上,我们使用的 HTTP 协议、消息队列、存储、缓存,都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说,可靠性就是让数据无损送达。但若是考虑到成本,就会变得非常复…...
Python | 人脸识别系统 — 姿态检测
本博客为人脸识别系统的姿态检测代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:Su-Face-Recognition: A face recognition for user logining 注意:阅读本博客前请先参考以下博客 工具安装、环境配置:人脸…...
为什么说网络安全行业是IT行业最后的红利?
前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…...
谷粒商城二十四Sentinel限流熔断降级
我们在秒杀服务加的以上所有手段都是为了快,除了快之外,我们还需要保证稳定。 我们即使再快也会有一个极限值,现在假设单机下每秒处理一万个单,这已经是超高的处理能力了,秒杀服务上了五台服务器,有三台掉…...
STM32-HAL-SPI-W25Q128FV简单读写测试(2)
文章目录 一、Flash的基本读写操作1.1 向芯片中的某个地址(addr:0x02)连续写入不定长的数据并读取代码示例读写流程分析函数分析 1.2 向芯片中的某个地址(addr:0x00)写入一个数值代码示例:读写流程分析 具体的配置接上…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
