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

LeetCode 刷题【19. 删除链表的倒数第 N 个结点、20. 有效的括号、21. 合并两个有序链表】

19. 删除链表的倒数第 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) {ListNode *k = head, *p = head, *q = head;//p、q间隔for(int i = 0; i < n; i++)q = q->next;//移动k、p、qwhile(q != nullptr){k = p;p = p->next;q = q->next;}//要删除头结点的情况单独处理if(k == p){head = head -> next;            //移动头结点的指向}//删除结点k-> next = p->next;delete(p);return head;}
};

20. 有效的括号

自己做

解:栈

class Solution {
public:bool isValid(string s) {int len = s.size();stack<char> p;for (int i = 0; i < len; i++) {if (s[i] == '(' || s[i] == '{' || s[i] == '[')       //压栈p.push(s[i]);if(p.size() == 0)                       //栈为空,直接不匹配——> }、)、]开头return false;//出栈检查是否匹配,不匹配就返回falseif (s[i] == ')') {if (p.top() != '(')return false;//能匹配上就弹出栈p.pop();}if (s[i] == '}') {if (p.top() != '{')return false;//能匹配上就弹出栈p.pop();}if (s[i] == ']') {if (p.top() != '[')return false;//能匹配上就弹出栈p.pop();}}//栈清空,说明全部匹配if (p.size() == 0)return true;//栈不为空,说明有遗漏,不匹配return false;}
};

 21. 合并两个有序链表

自己做

解:归并

/*** 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* mergeTwoLists(ListNode* list1, ListNode* list2) {ListNode *res = new ListNode();ListNode *p = list1, *q = list2, *k = res;while(p != nullptr && q != nullptr){if(p->val < q->val){    //p更小k->next = p;        //指向pp = p->next;        //p后移}else{                   //q更小k->next = q;        //指向qq = q->next;        //q后移}k = k->next;        //k后移k->next = nullptr;  //尾部置空}while(p != nullptr){        //list1还没有遍历完k->next = p;p = nullptr;}while(q != nullptr){        //list2还没有遍历完k->next = q;q = nullptr;}return res->next;}
};

http://www.dtcms.com/a/305370.html

相关文章:

  • Ragflow 文档处理深度解析:从解析到存储的完整流程
  • 2025年06月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 删除不了文件(文件夹)需更改文件夹(文件)权限
  • nodejs 实现Excel数据导入数据库,以及数据库数据导出excel接口(核心使用了multer和node-xlsx库)
  • Java 队列
  • 【密码学】4. 分组密码
  • Coze:Window操作系统部署Coze Studio
  • 5.1 动⼿实现⼀个 LLaMA2 ⼤模型
  • Kun_Tools(全能文档工具)V0.4.6 便携版
  • 正运动控制器Zbasic回零详细教程(带Z信号)
  • 智能图书馆管理系统开发实战系列(一):项目架构设计与技术选型
  • 【Android】三种弹窗 Fragment弹窗管理
  • CTF Misc入门篇
  • 携全双工语音通话大模型亮相WAIC,Soul重塑人机互动新范式
  • Linux学习篇12——Shell编程入门与Shell编程变量详解大全
  • C++ 枚举enum的使用详细总结
  • 信号上升沿时间与频谱分量的关系
  • 浏览器访问kerberos集群webUI详细配置
  • 在 Vue 中,如何在回调函数中正确使用 this?
  • 【时时三省】(C语言基础)指向指针数据的指针变量
  • 2025年中科院1区SCI-冬虫夏草优化算法Caterpillar Fungus Optimizer-附Matlab免费代码
  • 《汇编语言:基于X86处理器》第10章 结构和宏(3)
  • 【Dify】分享一篇之前部署过的过程
  • 机器学习算法—— K-近邻算法
  • MybatisPlus-核心功能
  • 【网络工程师软考版】网络安全
  • ROUGE-WE:词向量化革新的文本生成评估框架
  • 3D 工业相机解析:轴向、平面、重复、线性精度到底哪个更重要?
  • 【拓扑排序 最短路】P2149 [SDOI2009] Elaxia的路线|省选-
  • 爱普生L3219开机三灯同时闪报错031006故障分析