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

如何用代码做网站牛客网官网

如何用代码做网站,牛客网官网,可以免费建网站的,导航网页19. 删除链表的倒数第 N 个结点 相比于昨天#xff0c;感觉刷题越来越轻松了~ 我进步了#xff01; 以后刷题力度要加快了#xff0c;因为我报了蓝桥杯#xff01;加油~ 法一#xff1a;计算链表长度 思路#xff1a; 首先用个函数来计算出该链表的长度#xff0c;然…19. 删除链表的倒数第 N 个结点 相比于昨天感觉刷题越来越轻松了~ 我进步了 以后刷题力度要加快了因为我报了蓝桥杯加油~ 法一计算链表长度 思路 首先用个函数来计算出该链表的长度然后因为这里题目给的n是从后开始往前数的所以我们需要计算出待删除结点的前一个结点的下标长度然后这里我们引用了一个哑结点主要是记录头部结点的位置。删除的原理就是让前一个结点-next指向其下一个结点实现删除的目的。 cur-nextcur-next-next;也就是这样 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/ class Solution { public://1.链表长度int getLength(ListNode* head){int length0;while(head){length;headhead-next;}return length;}//2.移除操作ListNode* removeNthFromEnd(ListNode* head, int n) {//创建一个结点为0且next指向head的指针ListNode* dumynew ListNode(0,head);int lengthgetLength(head);ListNode* curdumy;for(int i1;ilength-n1;i){curcur-next;}cur-nextcur-next-next;ListNode* ansdumy-next;//释放空间不要也行不影响delete dumy;return ans;} }; 法二栈 用栈的目的也是为了找出当前结点的前驱结点。然后就和上题一样了。 思路 首先遍历链表让其进栈然后push出栈n个此时栈顶的元素既是n元素的前一个然后进行操作即可。需要注意的是博主我在这里踩了个雷那就是有头结点和没有设置头结点时报的错然后在有头结点的情况下是不需要考虑栈为空的情况的。比如说当head[1]n1时此时头结点为0在栈中还没弹出的情况下stk[0,1]的弹出之后就是stk[0]此时stack.top()是不为空的也就是不会报空指针异常的操作的但是如果不需要头结点的话那就请判断一下最后我的代码是无结点的情况。 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/ class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {stackListNode* stk;ListNode* curhead;while(cur){stk.push(cur);curcur-next;}for(int i1;in;i){stk.pop();}ListNode* pre;//若栈不为空if(!stk.empty()){prestk.top();}else{headhead-next;return head;}//用这种方法是没有考虑到头结点为空的情况的。细想一下所以哑结点的作用就突出来了pre-nextpre-next-next;return head;} }; 法三快慢指针 题解 这个的原理就是有两个人比如说张三和李四。他俩在一条道上走起点相同但是张三会比李四先走n步二者行走速度始终相同直到张三走到终点那最后张三和李四的距离是不是n那我现在在这条道的倒数n的距离设置一个炸弹但是张三买了装备所以炸不死他。但是李四可以那结合刚刚说的是不是张三的终点就是李四的死亡想一下二者的距离是n,此时张三已经到了。那在这道题中我想要得到的是当张三到达终点时李四走到的隔炸弹一个单位的距离然后跳一步直接跳过炸弹。怎么操作呢只要在最开始的时候设置一个哑节点张三指向头结点李四指向哑节点同时哑结点距离头结点只有一个单位的距离就可以了吖~对吧 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/ class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {//1.设置哑结点ListNode*dumynew ListNode(0,head);//2.控制两指针的距离ListNode* firsthead;ListNode* seconddumy;//让first指针也就是张三先走n步for(int i1;in;i){firstfirst-next;}//同时张三和李四以相同的速度行走直到张三到达终点while(first){firstfirst-next;secondsecond-next;}//让李四跳起来远离炸弹second-nextsecond-next-next;return dumy-next;} }; 总结 大家有没有发现其实法一和法二其实差不多用栈的时候遍历一下就相当于长度的计算快慢指针也很有意思我觉得嗷~ 总有些坑是要自己踩了才会影响深刻的也会更加强大所以多多踩坑吧宝子们~ 祝你生活愉快~ 刷题幸福哦~
http://www.zqtcl.cn/news/225919/

相关文章:

  • 西安网站建设新闻柳市专业网站托管
  • 网站怎么做移动端织梦网暂时关闭网站
  • 上海响应式网站建设企业seo 优化是什么
  • pc主页网站建设专业公司网站建设服务公司
  • js 取网站域名做服装团购有哪些网站有哪些
  • ysl网站设计论文网站快照回档
  • 网站建设成本计划汕头网站开发服务
  • 云朵课堂网站开发怎么收费wordpress安装完不显示
  • 网站建设进什么分录wordpress5.0 安装
  • 网站建设丷金手指专业十五户县规划建设和住房保障局网站
  • 普通门户网站开发价格怎么查公司信息
  • 广告传媒公司网站怎么做高品质的网站开发公司
  • 建设品牌型网站制作一起做玩具网站
  • 中山品牌网站设计自建站怎么做
  • 最牛免费网站建设wordpress 相册功能
  • 网站开发是培训网站开发毕业设计评审表
  • 网站对网友发帖隐私做处理网站怎么上传模板
  • 网站建设大神级公司网站 百度地图
  • 网站营销定义高端网站建设免费分析
  • 韩国网站建站html5修改器下载
  • 网站做联盟广告能赚钱吗如何制作微信小程序教程
  • 免费网页代理浏览器1广州seo效果
  • 网站开发所需基础知识学网络营销有前途吗
  • php网站怎么做集群wordpress添加产品图
  • 公司怎么建立网站吗聊城高端网站建设
  • 女生做网站编辑wordpress 办公主题
  • 接单做网站的从什么网站建网站好
  • 服务器如何发布网站正能量不良网站进入窗口免费阅读
  • 深圳个性化建网站服务商百度秒收录神器
  • 金华做公司网站wordpress会员可见插件