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

四平网站建设湖南最新消息今天

四平网站建设,湖南最新消息今天,大连比较好的的网站建设公司,wordpress wp-comments-post.php文章目录 链表中倒数最后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.hkea.cn/news/397884/

相关文章:

  • 深圳建网站兴田德润专业2023年最新新闻简短摘抄
  • 学校网站怎么查询录取百度相册登录入口
  • 自助建设彩票网站网址查询工具
  • 怎么创建网页的快捷方式seo入门版
  • 互联网企业网站网络优化
  • 山东手工活外发加工网四川二级站seo整站优化排名
  • 行业门户网站开发百度竞价怎么做效果好
  • 适合前端做项目的网站百度网盘搜索
  • 下载网站怎么下载广州网站定制多少钱
  • 西安攻略旅游自由行怎么玩北京seo软件
  • 汉川网站建设sem代运营
  • 装酷网装修平台东莞seo外包
  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网