当前位置: 首页 > news >正文

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个结点

写在前面&#xff1a; 做题环境如下&#xff1a; 题目渠道&#xff1a;牛客网 HJ51 输出单向链表中倒数第k个结点 华为机试题 编程语言&#xff1a;C 一、题目描述 描述 输入一个单向链表&#xff0c;输出该链表中倒数第k个结点&#xff0c;链表的倒数第1个结点为链表的尾指针…...

c#笔记-内置类型

内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级&#xff0c;可以让你在没有别的配置的情况下&#xff0c; 只要用的是c#就可以使用。这也意味着这些类型是非常重要&#xff0c;或是基本的东西。 整数&#xff1a;byte, sbyte, short, ushort, int, ui…...

功能齐全的 DIY ESP32 智能手表设计之原理图讲解一

相关设计资料下载ESP32 智能手表带心率、指南针设计资料(包含Arduino源码+原理图+Gerber+3D文件).zip 目录 USB部分原理图讲解 供电部分原理图讲解 USB转串口原理图讲解...

8年测试经验分享,15K的测试工程师需要掌握那些知识?

软件测试行业是随着软件产业的发展而兴起的一个重要领域&#xff0c;目前处于快速发展阶段。以下是软件测试行业的现状&#xff1a; 人才需求增长&#xff1a;随着互联网、移动互联网、物联网等新技术的不断发展&#xff0c;软件测试人才需求呈现出快速增长的趋势。越来越多的…...

利用通信基础设施提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 Matlab代码 1 概述 随着电力系统的复杂性和规模的增加&#xff0c;电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略&#xff0c;该策略基于通过通信基础设施获得的…...

MySQL 一条SQL语句是如何执行的?

总览 ​ 所以今天我们把MySQL拆解一下&#xff0c;看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说&#xff0c;MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&am…...

plt.imshow 全黑解决办法

# 标签有时候数据偏小&#xff0c;需要给赋予其他颜色方便可视化 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…...

有趣的地理题

题目 总部位于上海的“哔哩哔哩”&#xff08;简称B站&#xff09;&#xff0c;是国内知名的视频网站。在B站投稿的用户被称为“UP主”。据统计&#xff0c;B站的UP主群体中&#xff0c;来自上海的比例最高&#xff0c;200万粉丝以上的UP主&#xff0c;来自上海的比例超过 30 …...

DD驱动鼠标键盘(驱动级别机器人使用鼠标键盘)

官网下载 DD虚拟键盘虚拟鼠标 github下载 GitHub - ddxoft/master 点击下载后&#xff0c;将驱动包下&#xff0c;这里以win7为例 setup运行安装 安装成功后 可以打开电脑管理&#xff0c;可以看见DD虚拟鼠标和键盘 这里以JAVA接入为例 使用管理员权限启动eclipse &#…...

每日学术速递4.30

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Masked Frequency Modeling for Self-Supervised Visual Pre-Training(ICLR 2023) 标题&#xff1a;用于自监督视觉预训练的掩蔽频率建模 作者&#xff1a;Jiahao Xie, Wei Li, Xi…...

K8S部署及常见问题处理

目录 k8s kubeadm 一键自动化&#xff0c;安装k8s集群&#xff0c;安装所有运行需要的组件 一、环境初始化&#xff08;三台机器都需要执行&#xff09; 主机名、节点ip、部署组件 1、配置hosts&#xff08;主节点master和业务节点node都需要配置&#xff09;文件内容 2、…...

通过Robotstudio修改机器人程序的具体方法和步骤

通过Robotstudio修改机器人程序的具体方法和步骤 基本步骤可参考以下内容: 用网线连接机器人和电脑,机器人一侧要插入LAN2口;机器人和电脑的IP地址要在同一个网段内;请求写入权限;修改程序—编译—应用;加载修改后的程序到机器人;保存Robotstudio程序到电脑端;只能修改…...

第40讲:Python for-in循环语句使用索引遍历序列

文章目录 方法一&#xff1a;遍历的是序列的元素方法二&#xff1a;遍历的是序列的索引方法三&#xff1a;while循环遍历实现方法四&#xff1a;调用内置函数enumerate实现1.什么是enumerate函数2.调用内置函数enumerate实现索引遍历序列 如果在遍历序列的过程中&#xff0c;需…...

如何用Jmeter压测Netty的Echo服务之自定义Jmeter的Java Sampler

前言 如果想要压测一些三方组件&#xff0c;比如MQ&#xff0c;redis什么的&#xff0c;jmeter本身是不支持的。 本文以开发一个压测netty的echo示例&#xff0c;说明如何自定义jmeter的sampler。 开发 本文以idea示例&#xff0c; 新建工程 打开idea新建一个空的maven工程…...

GPT3.5之运用之检查模型是否满足条件

策略三&#xff1a;要求模型检查是否满足条件* 如果任务做出的假设不一定满足&#xff0c;我们可以告诉模型先检查这些假设&#xff0c;如果不满足&#xff0c;指示并停止执行。你还可以考虑潜在的边缘情况以及模型应该如何处理它们&#xff0c;以避免意外的错误或结果。 在如…...

【TCP为什么需要粘包和拆包】

如今&#xff0c;大半个互联网都建立在 TCP 协议之上&#xff0c;我们使用的 HTTP 协议、消息队列、存储、缓存&#xff0c;都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说&#xff0c;可靠性就是让数据无损送达。但若是考虑到成本&#xff0c;就会变得非常复…...

Python | 人脸识别系统 — 姿态检测

本博客为人脸识别系统的姿态检测代码解释 人脸识别系统博客汇总&#xff1a;人脸识别系统-博客索引 项目GitHub地址&#xff1a;Su-Face-Recognition: A face recognition for user logining 注意&#xff1a;阅读本博客前请先参考以下博客 工具安装、环境配置&#xff1a;人脸…...

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展&#xff0c;一些趋势和发展可能对2023年网络安全行业产生影响&#xff1a; 5G技术的广泛应用&#xff1a;5G技术的普及将会使互联网的速度更快&#xff0c;同时也将带来更多的网络威胁和安全挑战。网络安全…...

谷粒商城二十四Sentinel限流熔断降级

我们在秒杀服务加的以上所有手段都是为了快&#xff0c;除了快之外&#xff0c;我们还需要保证稳定。 我们即使再快也会有一个极限值&#xff0c;现在假设单机下每秒处理一万个单&#xff0c;这已经是超高的处理能力了&#xff0c;秒杀服务上了五台服务器&#xff0c;有三台掉…...

STM32-HAL-SPI-W25Q128FV简单读写测试(2)

文章目录 一、Flash的基本读写操作1.1 向芯片中的某个地址&#xff08;addr:0x02&#xff09;连续写入不定长的数据并读取代码示例读写流程分析函数分析 1.2 向芯片中的某个地址&#xff08;addr:0x00&#xff09;写入一个数值代码示例&#xff1a;读写流程分析 具体的配置接上…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...