iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++解决输出链表中倒数k个结点的问题
  • 782
分享到

C++解决输出链表中倒数k个结点的问题

2024-04-02 19:04:59 782人浏览 安东尼
摘要

目录题目描述示例解题思路测试代码补充题目描述 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链

题目描述

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。

如果该链表长度小于k,请返回一个长度为 0 的链表。

数据范围:0<=n<=10^5,0<=ai<=10^9,0<=k<=10^9

要求:空间复杂度O(n),时间复杂度O(n)

进阶:空间复杂度O(1),时间复杂度O(n)

例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示:

其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。

示例

输入:

{1,2,3,4,5},2

返回值:

{4,5}

说明:

返回倒数第2个节点4,系统会打印后面所有的节点来比较。

解题思路

本题考察数据结构链表的使用。本题常用两种思路,一种是比较基础的,就是用容器把链表指针依次存储,输出倒数第k个即可,这样空间复杂度为O(n);另一种进阶解法,快慢指针法,让快指针先走k步,当它走到头时,此时慢指针的位置就是倒数第k个结点。

测试代码为快慢指针法,容器法比较简单就不写了。

测试代码



class Solution {
public:
    
    Listnode* FindKthToTail(ListNode* pHead, int k) {
        // 空链表直接返回
        if(pHead == NULL)
            return pHead;
        // 快慢指针
        ListNode *fast = pHead;
        ListNode *slow = pHead;
        // 让快指针先走k步
        while(k--)
        {
            if(fast == NULL)
                return NULL;
            fast = fast->next;
        }
        // 当快指针走完时,慢指针的位置就是倒数第k个结点
        while(fast != NULL)
        {
            fast = fast->next;
            slow = slow->next;
        }
        return slow;
    }
};

补充

第二种实现方法:



class Solution {
public:
    
    ListNode* FindKthToTail(ListNode* pHead, int k) {
        // write code here
        ListNode* p=pHead;
        ListNode* q=pHead;
        if(pHead==NULL)return NULL;
        while(k--)
        {
            if(q==NULL)return NULL;
            q=q->next;
            
            //k--;
        }
        //if(q==NULL)return pHead;
        while(q)
        {
            p=p->next;
            q=q->next;
        }
        return p;
    }
};

到此这篇关于c++解决输出链表中倒数k个结点的问题的文章就介绍到这了,更多相关C++输出链表中倒数k个结点内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++解决输出链表中倒数k个结点的问题

本文链接: https://www.lsjlt.com/news/159917.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++解决输出链表中倒数k个结点的问题
    目录题目描述示例解题思路测试代码补充题目描述 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链...
    99+
    2024-04-02
  • 如何利用Java输出链表中倒数第k个结点
    目录前言问题描述方法一方法描述动画演示代码如下方法二 方法描述动画演示代码如下总结前言 链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组...
    99+
    2024-04-02
  • 利用Java怎么将链表输出到倒数第k个节点
    利用Java怎么将链表输出到倒数第k个节点?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。问题描述输入一个链表,输出该链表中倒数第k个结点。结点定义如下:publ...
    99+
    2023-05-31
    java ava
  • C++ 解决求两个链表的第一个公共结点问题
    目录题目描述:输入描述:返回值描述:示例:解题思路:补充题目描述: 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试...
    99+
    2024-04-02
  • LeetCode题解之如何删除链表倒数第n个结点
    这篇文章主要讲解了“LeetCode题解之如何删除链表倒数第n个结点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LeetCode题解之如何删除链表倒数第n...
    99+
    2024-04-02
  • C++进阶练习删除链表的倒数第N个结点详解
    目录1.链接2.题目描述3.解题思路4.题解1.链接 19. 删除链表的倒数第 N 个结点. 2.题目描述 3.解题思路 方法一 1.在对链表进行操作时,一种常用的技巧是添加一个哑...
    99+
    2024-04-02
  • 怎么找到链表的倒数第n个结点
    本篇内容主要讲解“怎么找到链表的倒数第n个结点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么找到链表的倒数第n个结点”吧!什么意思呢我们以下面这个链表为例:...
    99+
    2024-04-02
  • C++解决合并两个排序的链表问题
    目录题目描述:示例:解题思路:测试代码:题目描述: 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: n为0~1000,节点值为...
    99+
    2024-04-02
  • C#输出参数out问题如何解决
    这篇文章主要讲解了“C#输出参数out问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#输出参数out问题如何解决”吧!C# 输出参数out什么是输出参数方法声明时,使用out修...
    99+
    2023-07-05
  • 如何通过C++求出链表中环的入口结点
    目录题目描述:输入描述:返回值描述:示例:解题思路:测试代码:题目描述: 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 数据范围: n≤1000...
    99+
    2024-04-02
  • LeetCode题解之怎么求链表的中间结点
    本篇内容介绍了“LeetCode题解之怎么求链表的中间结点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题...
    99+
    2024-04-02
  • printf输出浮点数超过范围问题怎么解决
    在使用printf输出浮点数时,如果超过了浮点数的表示范围,可能会出现不确定的结果,比如输出的值不正确或者程序崩溃等问题。为了解决这...
    99+
    2023-05-14
    printf输出浮点数 printf
  • C++中cout输出中文信息乱码问题及解决
    目录cout输出中文信息乱码问题问题描述解决办法C++ 输出cout输出输出附录cout输出中文信息乱码问题 问题描述 在实例化学生类对象时,对学生的姓名采用了形如“张三...
    99+
    2022-11-13
    cout输出中文乱码 C++乱码 C++ cout输出中文乱码
  • 解决pytorch 损失函数中输入输出不匹配的问题
    一、pytorch 损失函数中输入输出不匹配问题 File "C:\Users\Rain\AppData\Local\Programs\Python\Anaconda.3.5.1\...
    99+
    2024-04-02
  • C++求解二叉树的下一个结点问题
    目录题目描述解题思路测试代码1)暴力破解2)结合中序排序性质题目描述 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包...
    99+
    2024-04-02
  • 解决PHP输出中文乱码问题的方法
    解决PHP输出中文乱码问题的方法 在进行PHP开发过程中,经常会遇到输出中文乱码的问题,这给我们的网站开发和用户体验带来了困扰。在PHP中,解决中文乱码问题的方法主要包括设置HTTP头...
    99+
    2024-03-15
    编码 字符 输出
  • C++中常见的数据结构问题及解决方法
    C++中常见的数据结构问题及解决方法数据结构是计算机科学中最基础、最核心的概念之一。在C++编程中,我们常常需要使用各种数据结构来解决实际问题。然而,有时候我们可能会遇到一些问题,如如何初始化一个栈或者链表,如何在二叉树中进行查找等。本文将...
    99+
    2023-10-22
    解决方法 - 链表 (Linked List) 数据结构问题 - 数组 (Array) - 栈和队列 (Stack an
  • C++中数据结构问题及解决方案的讨论
    C++中数据结构问题及解决方案的讨论导语:在C++编程中,数据结构是一个重要的概念,它能够帮助我们以一种有组织的方式存储和管理数据。然而,当面临复杂的问题时,我们可能会遇到一些困难,如何合理地选择和使用数据结构成为一个关键的问题。本文将介绍...
    99+
    2023-10-22
    链表 例如数组 队列等。
  • Python输出列表不带中括号和引号的问题如何解决
    这篇文章主要介绍了Python输出列表不带中括号和引号的问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python输出列表不带中括号和引号的问题如何解决文章都会有所收获,下面我们一起来看看吧。正常p...
    99+
    2023-07-05
  • C++中数据结构问题和解决方案的讨论
    C++中数据结构问题和解决方案的讨论数据结构是计算机科学中非常重要的概念之一,它是存储和组织数据的方式和方法。在C++编程中,我们经常会遇到各种各样的数据结构问题,比如如何高效地存储和操作数据,如何实现各种常见数据结构等等。本文将探讨C++...
    99+
    2023-10-22
    数据结构: 数据 解决方案: 解决 讨论: 讨论
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作