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

深圳网站建设制作视频软件电商网站开发毕业设计

深圳网站建设制作视频软件,电商网站开发毕业设计,泰州网站建设团队,做渔具网站文章目录 链表中倒数最后k个结点删除链表的倒数第n个节点 链表中倒数最后k个结点 题目链接:链表中倒数最后k个结点 解题思路1:先找长度再找k对应的节点 首先遍历一遍链表找到链表的长度n 然后比较长度和k的大小关系,如果比k小,…

文章目录

  • 链表中倒数最后k个结点
  • 删除链表的倒数第n个节点

链表中倒数最后k个结点

题目链接:链表中倒数最后k个结点

解题思路1:先找长度再找k对应的节点

首先遍历一遍链表找到链表的长度n
然后比较长度和k的大小关系,如果比k小,返回一个空节点
如果比k大,我们再从头节点遍历n-k次找到k对应的节点

代码如下:

1、可以用map,相对麻烦

    ListNode* FindKthToTail(ListNode* pHead, int k) {ListNode* cur = pHead;map<ListNode*, int> mp;int count = 0;while(cur != nullptr){mp[cur] = count;cur = cur->next;count++;}if(count < k) return nullptr;cur = pHead;while(cur != nullptr){if(mp[cur] == count-k){return cur;}cur = cur->next;}return nullptr;}

2、直接计算大小,方便简单

    ListNode* FindKthToTail(ListNode* pHead, int k) {int count = 0;ListNode* cur = pHead;while(cur != nullptr){count++;cur = cur->next;}if(count < k) return nullptr;cur = pHead;for(int i=0; i<count-k; i++){cur = cur->next;}return cur;}

解题思路2:快慢指针

代码如下:

    ListNode* FindKthToTail(ListNode* pHead, int k) {ListNode* fast = pHead;ListNode* slow = pHead;for(int i=0; i<k; i++){if(fast != nullptr){fast = fast->next;}else {return nullptr;}}while(fast != nullptr){fast = fast->next;slow = slow->next;}return slow;}

解题思路3:借助栈

栈只存放节点,并不改变节点的指向

代码如下:

    ListNode* FindKthToTail(ListNode* pHead, int k) {stack<ListNode*> st;ListNode* cur = pHead;while(cur != nullptr){st.push(cur);cur = cur->next;}if(st.size()==0 || st.size()<k) return nullptr;for(int i=0; i<k; i++){cur = st.top();st.pop();}return cur;}

删除链表的倒数第n个节点

题目链接:删除链表的倒数第n个节点

解题思路1:快慢指针

用两个指针来控制慢指针走到最后的时候是倒数第n个节点
首先先定义一个虚拟头结点,将所有节点统一管理,不再单独处理删除的头结点的情况
其次让快指针先走n步
接着让慢指针指向头节点,代表当前元素,pre指针指向添加的表头,这样两个快慢指针之间的距离一直是n
快慢指针同时移动,当快指针到达链表尾部也就是nullptr的时候,慢指针此时距nullptr有n个位置,也就是倒数第n个元素的位置
最后将pre节点的next指向慢指针的next删除这个节点,再接着返回虚拟头节点的next节点

代码如下:

    ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* res = new ListNode(0);res->next = head;ListNode* pre = res;ListNode* cur = head;ListNode* fast = head;//快指针先走n步while(n-- > 0){fast = fast->next;}//快慢指针一起走while(fast != nullptr){fast = fast->next;pre = cur;cur = cur->next;}pre->next = cur->next;return res->next;}

解题思路2:先找长度再找k对应的节点,再删除它

代码如下:

    ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* res = new ListNode(0);res->next = head;ListNode* pre = res;ListNode* cur = head;int count = 0;while(cur != nullptr){cur = cur->next;count++;}cur = head;for(int i=0; i<count-n; ++i){pre = cur;cur = cur->next;}pre->next = cur->next;return res->next;}
http://www.bjxfkj.com.cn/article/109082.html

相关文章:

  • 怎样在百度做网站打广告南京做网站费用
  • 网站内容优化方法有哪些wordpress分类目录表
  • wordpress cpu突然深圳网站seo关键词
  • php程序员做企业网站自己电脑做网站服务器小工具
  • 创建公司网站 优帮云广州小程序软件开发
  • 工信部网站备案时间线上推广产品
  • 星空传媒有限公司网站wordpress导航仿制
  • 网站服务器无响应是怎么回事六安钢贴吧
  • 广州网站建设比较重庆市城市建设档案馆官方网站
  • 建网站的基本流程苏州市亿韵商务信息有限公司
  • 网站轮播动态图如何做建个网站需要服务器吗
  • 设计网站平台高清图片素材网
  • 备案官方网站推广一个网站需要什么
  • 商城类网站怎么推广wordpress的采集插件
  • 公司做网站宣传怎么做化妆品 网站模板
  • seo是搜索引擎优化东莞seo排名扣费
  • 青海城乡与建设厅网站建设网站需要那几部
  • 赤城seo网站优化排名网站建设招聘需求
  • 河南网站备案今天猪最新价格
  • p2p网站建设 上海网站做好了 怎么做解析
  • 长春网站优化指导网站设计步骤ppt
  • 响应式网站都有哪些建设一个自己的网站首页
  • form e哪个网站做营销型网站建设主要教学内容
  • 贵阳做网站哪家好手机网站制作吧
  • 义乌购网站做代销怎么样工作单位怎么填
  • 快速搭建网站域名绑定设置百合网网站建设与策划
  • 美食网站模版wordpress 恶意
  • 让iis做跳转网站网站建设补充报价单
  • 适合企业做外贸的几个网站小学生一分钟新闻播报
  • 建设网站的一般步骤曲靖住房和城乡建设局网站