首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一起刷算法与数据结构-链表篇2

一起刷算法与数据结构-链表篇2

作者头像
工藤学编程
发布2025-12-22 09:15:52
发布2025-12-22 09:15:52
240
举报

大家好,我是工藤学编程 🦉

大二在读

作业侠系列最新文章😉

Java实现聊天程序

一起备战ccf-csp与蓝桥杯系列最新文章🐷

一起备战蓝桥杯与CCF-CSP之大模拟炉石传说

一起刷算法与数据结构最新文章🐷

一起刷算法与数据结构-链表篇2

之前我们已经发布了链表篇1: 一起刷算法与数据结构-链表篇1

今天这篇的内容如下:

题目1.链表排序(待解决) 题目2.展平多级双向链表(待解决) 题目3.设计链表(待解决) 题目4.对链表进行插入排序(待解决) 题目5.k个一组翻转链表(待解决) 题目6.两两交换链表中的节点 题目7.链表中的下一个更大节点 目前力扣上的关于链表的题目都刷的差不多了,除了实在不会的以及和树相关的,等着和树一起刷,接下来就是刷树啦!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

题目6.两两交换链表中的节点

在这里插入图片描述
在这里插入图片描述

解题思路: 可参考:B站大佬讲解

参考代码:

代码语言:javascript
复制
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
      auto dummy = new ListNode(-1);
      dummy->next=head;
      auto per = dummy,cur = dummy->next;
      while(cur && cur->next)
      {
          auto temp = cur->next;
          per->next = temp;
          cur->next = temp->next;
          temp->next = cur;
          per=cur;
          cur=cur->next;
      }
      return dummy->next;

    }
};

题目7.链表中的下一个更大节点

在这里插入图片描述
在这里插入图片描述

解题思路:

一般具有这种旁边的第一个最大/最小问题,我们都可以用单调栈解决,一般来说都是找左边的,这样便于我们编写代码,而这题确是从右边找,但是我们只需要逆序开始从左找,再把答案反向输出,即可得到本题答案。

参考代码:

代码语言:javascript
复制
class Solution {
public:
    vector<int> nextLargerNodes(ListNode* head) {
           vector<int>l;
           vector<int>ans;
           for(auto p=head;p;p=p->next)
           {
               l.push_back(p->val);
           }
           stack<int>s;
           for(int i=l.size()-1;i>=0;i--)
           {
               if(!s.empty() && l[i]<s.top())
               {
                   ans.push_back(s.top());
               }
               else
               {
                   
                   while(!s.empty() && l[i]>=s.top())
                   {
                       s.pop();    
                   }
                   if(!s.empty()) ans.push_back(s.top());
                   else ans.push_back(0);
               }

                s.push(l[i]);
                
           }
           //return ans;
           for(int i=0;i<ans.size()/2;i++)
           {
               swap(ans[i],ans[ans.size()-i-1]);
           }
           return ans;
    }
};

好了,链表篇就告一段落啦,我没有解决的题解决了会更新滴,大家也可以去尝试尝试哦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档