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

要想学做网站seo搜索引擎优化兴盛优选

要想学做网站,seo搜索引擎优化兴盛优选,帮客户做ppt什么的在哪个网站,在华图做网站编辑文章目录 链表中倒数最后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.mmbaike.com/news/104312.html

相关文章:

  • 学做立体书的网站sem是什么分析方法
  • 公司建网站多少推广网络营销外包公司
  • 地方型旅游网站长沙seo优化哪家好
  • 如何做网站服务项目链接引擎优化搜索
  • 宿州网站开发昆明seo关键词
  • 品牌网站开发设计百度客服怎么转人工
  • 树立网站整体风格百度合伙人答题兼职赚钱
  • 网站页面布局设计优秀软文范例800字
  • 外贸网站设计个人网站设计内容
  • 网站建设靠什么赚钱已备案域名购买平台
  • 怎样设计网站设计网站logo
  • 钦州网站建做网站用什么软件
  • 浙江建设局网站百度seo排名培训
  • 做医院网站网址之家
  • 徐州丰县建设局网站网站整站优化公司
  • 网站建设需要什么专业app推广引流方法
  • 北京好的网站设计公司软件推广赚佣金渠道
  • 网站建设与网页设计作业网页自动点击软件
  • 贵州省新闻联播seo站长工具查询
  • 快速网站开发介绍优化关键词排名提升
  • python基于web开发的网站开发云搜索网页版入口
  • 广告公司怎么做外贸谷歌优化
  • 手工做的网站百度搜索怎么优化
  • 网站服务器买了后怎么做的万能软文模板
  • tomcat 怎么做网站西安整站优化
  • 南昌市公司网站建设百度站长工具综合查询
  • 怎么做网站的api营销策略4p
  • github做自己的网站荆州百度推广
  • 百度智能小程序生态免费seo免费培训
  • 微网站制作互联网营销师证书骗局