首页 > 其他分享 >JZ22 链表中倒数最后k个节点

JZ22 链表中倒数最后k个节点

时间:2024-04-12 19:13:12浏览次数:24  
标签:倒数 int JZ22 return next 链表 pHead ListNode

image
image

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    ListNode* FindKthToTail(ListNode* pHead, int k) {
        // write code here

        //思路:首先获取链表的长度n,然后让链表往前走n-k步,然后返回最后k个节点

        int length = GetLengthOfList(pHead);
        int len = length - k;
        if(length < k)
            return nullptr;
        else
         {
            while (len) {
                pHead = pHead->next;
                len--;
            }
            return pHead;
         }
 
    }

    int GetLengthOfList( ListNode* pHead)
    {
        int i=0;
        while (pHead) {
            i++;
            pHead = pHead->next;
        }
        return i;
    }
};

标签:倒数,int,JZ22,return,next,链表,pHead,ListNode
From: https://www.cnblogs.com/H43724334/p/18131945

相关文章

  • JZ52 两个链表的第一个公共节点
    /*structListNode{ intval; structListNode*next; ListNode(intx): val(x),next(NULL){ }};*/#include<endian.h>classSolution{public: //返回类型为节点指针类型,传入的是两个链表的头节点ListNode*FindFirstCommonNode(ListNode*pHead1,......
  • BM2 链表内指定区间反转
    代码有点长,但是我比较喜欢这种做法。注意的点是如果第一个参与了反转,那么返回的就是区间反转之后的头结点,而不是原始头结点。importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*publicListNode(intval){*this.val=......
  • BM1 反转链表
    开始刷数据结构了。1.递归importjava.util.*;/**publicclassListNode{*intval;*ListNodenext=null;*publicListNode(intval){*this.val=val;*}*}*/publicclassSolution{publicListNodeReverseList(ListNodehea......
  • JZ25合并两个排序链表
    /***structListNode{* intval;* structListNode*next;* ListNode(intx):val(x),next(nullptr){}*};*/#include<cstddef>classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*......
  • 天梯赛-练习集-L2-002 链表去重(25分)
    L2-002链表去重代码长度限制:16KB时间限制:400ms内存限制:64MB题目描述给定一个带整数键值的链表L,你需要把其中绝对值重复的键值结点删掉。即对每个键值K,只有第一个绝对值等于K的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定L为21→-15→-15......
  • 面相对象(三):模拟链表
    面向对象的基本原理是对对象建模,让抽象的逻辑封装成具象的行为,更方便人们理解和使用。在前面的文章中我写了关于继承的一些理解,一般来说这里应该讨论与继承同为面向对象三个主要特征的多态与封装了。但是我想多态与封装是一种伴随着类的定义自然而然形成的现象,只有先接触了一定数......
  • 数据结构之链表(c语言版)
    链表是线性表,链表的特点就是可以动态增减元素。种类有单向链表、双向链表,循环链表。一、单链表单链表的储存思想使用指针表示节点之间的逻辑关系,它的储存单元可以连续也可以不连续,每个储存单元需要储存信息和储存与后继节点的地址信息,储存单元又称之为节点。单链表由头指针唯......
  • 链表(java语言版)
    链表(Linkedlist)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。使用链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域......
  • C语言简单的数据结构:单链表的有关算法题(1)
    算法题重点在于思路,代码其实并不难,这里的每一题都提供多种思路,大家可以动手写一下,并找到更好的解题方法这里先介绍前三道题目:1.单链表相关经典算法OJ题1:移除链表元素2.单链表相关经典算法OJ题2:反转链表3.单链表相关经典算法OJ题4:链表的中间结点1.单链表相关经典算......
  • C语言简单的数据结构:单链表
    目录:1.单链表的概念及结构2.单链表的实现2.1单链表的定义、创建和打印2.11单链表的定义2.12单链表的创建2.13单链表的打印2.2单链表的头插和尾插2.21尾插2.22头插2.3单链表的头删和尾删2.31尾删2.31头删2.4单链表的查找2.5单链表指定位置的插入和删除2.51指定位置前......