首页 > 其他分享 >实习冲刺第十六天

实习冲刺第十六天

时间:2024-11-12 22:46:27浏览次数:3  
标签:node 第十六 head 冲刺 循环 引用 实习 节点 指针

LCK 140.训练计划2 返回链表倒数第K个节点

给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。

示例 1:

输入:head = [2,4,7,8], cnt = 1
输出:8

思路详解:本题我们使用两种办法解决,第一种我们先顺序遍历一次链表,记录链表的节点总数,然后再次循环节点总数减去目标位数就是我们要的倒数第k个节点

class Solution {
public:
    ListNode* trainingPlan(ListNode* head, int cnt) {
       int index=0;
       ListNode*node=head;//记录头节点并循环然后记录整个链表的总结点数
       while(node)
       {
        index++;
        node=node->next;
       }
       for(node=head;index>cnt;index--)//再次循环找到所需节点即可
       {
        node=node->next;
       }
       return node;
    }
};

当然我们还可以用双指针的办法来解决,定义两个指针,一个指针快一个指针慢,让快指针先走cnt个节点,然后让快慢指针一起走直到快指针走到null此时慢指针指向的节点就是我们的倒数第K个节点,如果不理解可以看下面的图,p1为快指针第一次停下的位置,q1为快指针走到NULL时所指位置

class Solution {
public:
    ListNode* trainingPlan(ListNode* head, int cnt) {
      ListNode*fast=head;//定义快慢指针,让他们都指向头节点
      ListNode*slow=head;
      for(int i=0;i<cnt;i++)
      {
        fast=fast->next;//先让快指针走。走过cnt个节点数
      }
      while(fast)
      {
        fast=fast->next;//如果fast没有走到NULL就让两个指针一起走
        slow=slow->next;//快指针停下后,慢指针所指向的节点就是倒数第n个节点
      }
      return slow;
    }
};

面经:

1. new或malloc在申请空间时,超出可申请的大小就会分配异常,可申请的大小是多少

没有一个固定的“可申请的大小”,因为这取决于上述所有因素。举个例子,如果你在一个具有4GB物理内存的32位系统上,理论上你的程序可能无法使用超过4GB的内存,但实际上,由于操作系统和其他程序也需要内存,单个程序可能只能分配到几百兆到几字节。

2. C++循环引用指的是什么,在使用过程当中需要注意什么问题

在C++中,循环引用指的是两个或多个对象相互持有对方的引用(或指针),形成一个闭环,这样就会导致引用计数无法正确地归零,从而无法释放这些对象占用的内存。循环引用通常出现在使用引用计数(如智能指针shared_ptr)来管理动态分配的对象时。比如下面这段例子

#include <memory>
using namespace std;
class ClassA {
public:
    shared_ptr<ClassB> ptrB;
    ~ClassA() { cout << "ClassA destroyed" << endl; }
};

class ClassB {
public:
   shared_ptr<ClassA> ptrA;
    ~ClassB() {cout << "ClassB destroyed" << endl; }
};

int main() {
    {
        auto a = make_shared<ClassA>();
        auto b = make_shared<ClassB>();
        a->ptrB = b;
        b->ptrA = a;
    } // 当离开这个作用域时,我们期望a和b被销毁,但由于循环引用,它们不会
    return 0;
}

        如何避免循环引用:

  • 避免循环引用:在设计类和对象关系时,应尽量避免形成循环引用。
  • 使用弱引用:如果循环引用不可避免,可以使用weak_ptr来打破循环。weak_ptr是一种不增加引用计数的智能指针,它指向由shared_ptr管理的对象。
  • 手动打破循环:在某些情况下,可以在适当的时机手动断开循环引用,比如在某个对象的生命周期结束时。

标签:node,第十六,head,冲刺,循环,引用,实习,节点,指针
From: https://blog.csdn.net/m0_74381802/article/details/143603047

相关文章

  • Alpha冲刺阶段博客
    数字电路模拟游戏团队Alpha冲刺阶段博客一、ScrumMeeting第六周会议记录第七周会议记录二、测试报告Alpha阶段测试报告三、习得的软工原理/方法/技能?1.迭代开发与持续集成采用迭代开发模式可以极大的提高开发效率,降低开发成本,迭代开发是一种增量式的软件开发方式,通过多......
  • 第 2 篇 Scrum 冲刺博客
    团队作业4——第2篇Scrum冲刺博客作业要求这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标团队集体协作完成项目开发队名雄狮......
  • 多校A层冲刺NOIP2024模拟赛21
    以为150要垫底了,没想到还有高手。送信卒签,没一会就写完但因为交的太晚被猫娘抢了首A。恼火。简要题意给一个\(n\timesm(n,m\le100)\)的网格图,左右走的代价为\(1\),上下走的代价为\(k\),求最小的\(k\),使得\((sx,sy)\)到\((tx,ty)\)的代价恰好为\(s(s\le10^5)\)。数据保证有解......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛21
    Rank别样的,不好评价,烂完了A.送信卒签,我是唐氏。为什么呢题目没给最短路的定义,我赛时觉得最短路就是最短路径,于是直接bfs一遍随便加个check就做完了。当然过得那遍按我的思路来说是错的,然后我也发现了这一点,然后就改了,然后就WA了。总结:错误思路的错解是正确思路......
  • 多校A层冲刺NOIP2024模拟赛21
    多校A层冲刺NOIP2024模拟赛21\(T1\)A.送信卒\(90pts/100pts\)部分分\(90pts\)设最后的可能的最短路中左右共移动了\(d\)次,上下共移动了\(x\)次。则等价于求\(\min\{x_{i}k+d_{i}\}=s\)的解,观察到\(d\in[0,\min(\left\lceil\frac{nm}{2}\right\rce......
  • 第 1 篇 Scrum 冲刺博客
    团队作业4——项目冲刺-1这个作业属于哪个课程广工计院计科34班软工这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13233这个作业的目标对系统整体构建和开发目录成员认领的任务成员的任务安排敏捷开发前的感想......
  • PMP–一、二、三模、冲刺–分类–6.进度管理--技巧--赶工&快速跟进
    文章目录技巧一模6.进度管理--6.控制进度--赶工和快速跟进的区分--赶工:增加资源,以最小的成本代价来压缩进度工期;快速跟进:将正常情况下按顺序进行的活动或阶段改为至少是部分并行开展。【赶工加人,快速跟进多开工】6.进度管理--6.控制进度--进度压缩--采用进度压缩技术使进......
  • 项目冲刺11.11
    这个作业属于哪个课程计科22级34班这个作业要求在哪里作业要求这个作业的目标进行为期七天的项目冲刺并记录前言本篇博客是项目冲刺的第一篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客......
  • 第 1 篇 Scrum 冲刺博客
    团队作业4——第1篇Scrum冲刺博客作业要求这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标团队集体协作完成项目开发队名雄狮......
  • Scrum冲刺-第一篇
    这个作业属于哪个课程广工计院计科34班这个作业要求在哪里作业要求这个作业的目标小队各成员的任务确认和项目期望一、团队简介:队名:edg.gdut成员:姓名学号罗祖文3121004537郑志涛3122004547陈恺麟3122004515许凌铎3122004540邓茗骏......