当前位置: 首页 > 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.lryc.cn/news/604188.html

相关文章:

  • 面试刷题平台项目总结
  • 用命令查看Android设备的 Linux 内核版本,了解其对应的硬件支持各种特性
  • Git命令保姆级教程
  • 如何进行项目复盘?核心要点分析
  • AI产品经理手册(Ch3-5)AI Product Manager‘s Handbook学习笔记
  • linux命令tail的实际应用
  • C语言---万能指针(void *)、查找子串(strncmp函数的应用)多维数组(一维数组指针、二维数组指针)、返回指针值函数、关键字(const)
  • 【RH134 问答题】第 9 章 访问网络附加存储
  • 什么是数据编排?数据编排的流程、优势、挑战及工具有哪些?
  • OpenLayers 综合案例-底图换肤(变色)
  • Intellij Idea--解决Cannot download “https://start.spring.io‘: Connect timedout
  • 前端路由
  • DAY21 常见的降维算法
  • vulhub 02-Breakout靶场攻略
  • 计算机网络基础(一) --- (网络通信三要素)
  • 学习日志21 python
  • 集成电路学习:什么是WDT看门狗定时器
  • 简历美容院:如何把“打杂经历“包装成“核心项目“?
  • 系统优化与性能调教
  • USB Type-C PD协议一文通
  • QFutureWatcher 收不到 finished 信号-QFutureWatcher 与对象生命周期
  • 02-Breakout靶机攻略
  • linux命令ps的实际应用
  • ubuntu18.04制作raid0
  • Springboot+vue智能家居商城的设计与实现
  • python使用ffmpeg录制rtmp/m3u8推流视频并按ctrl+c实现优雅退出
  • Apache Ignite 的分布式队列(IgniteQueue)和分布式集合(IgniteSet)的介绍
  • windows下Docker安装路径、存储路径修改
  • Element Plus常见基础组件(一)
  • 网络协议——MPLS(多协议标签转发)