< cnt - n - 1; i++) p = p->next;p->next = p->next->next;return dummy->next;}};
20. 有效的括号
思想
分析题目首先想到这个和栈数据结构非常相似 , 如果是左括号的一种情况那么就选择放入栈中 , 如果是右括号中的一种情况 , 就去分析能否和栈顶的元素配对 , 能配对就弹出原来的栈顶元素 , 不能配对就说明不满足条件 false
class Solution {public:bool isValid(string s) {//可以先通过奇偶判断int n = s.size();if(n % 2 == 1) return false;unordered_map
y总的简化代码
class Solution {public:bool isValid(string s) {stack
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) {//创建一个虚拟头节点dummy , 同时为了方便我们更新下一个结点 , 使用tail节点auto dummy = new ListNode(-1), tail = dummy;//等价于 ListNode* dummy = new ListNode(-1);//ListNode* tail = dummy;//l1 和 l2 都不为空的时候判断大小while(list1 && list2) {if(list1->val < list2->val) {//tail和list1都需要更新tail = tail->next = list1;list1 = list1->next;} else {tail = tail->next = list2;list2 = list2->next;}}//当一个指针到达末尾时 , 只需要把tail下一个节点接到不为空的那个链表后面if(list1) tail->next = list1;if(list2) tail->next = list2;return dummy->next;}};
22. 括号生成
思想
对于括号配对问题需要了解两个常用到的结论(前提是只有一种类型括号):
左括号的数量小于等于右括号的数量时 , 才能配对最终左右括号数量相等
对于这个问题需要给出所有的排列方式的题目 , 我们应该条件反射的想到dfs来解决 。
代码中并没有显式的写出回溯的过程 , 起始回溯隐藏在了if判断中 , if的本质含义起始就是可以实现的几种方案 , 当一种方案可行并且结束以后 , 返回到if判断 , 就会考虑下一个if;即通过多个if考虑了所有可能的情况
class Solution {public:vector> res;vector> generateParenthesis(int n) {dfs(n, 0, 0, "");return res;}void dfs(int& n, int ln, int rn, string path) {//当左括号数目和右括号数目都等于n的时候这条搜索路径结束if(ln == n && rn == n) res.push_back(path);else {//if含义 , 就是dfs时当前可能走的分支情况 , 本题就只有两种情况if(ln
- leetcode:2021.12.19周赛 变成递增数列的最少操作次数
- 200道大数据面试常考Leetcode算法题
- 绝对领域、究极力量,这部游戏改编的漫画当年火遍大街小巷 世界之最漫画
- 为什么都要柑果球,究极日月里柑果球还是只能获得一个吗
- 究极日月究极之洞神兽 究极日月究极之洞
- 口袋妖怪究极绿宝石臭臭花怎么进化?
- 火影忍者究极忍者风暴3完全爆发 火影忍者:究极忍者风暴3完全爆发
- 究极绿宝石5谁可以学潮旋
- 火影忍者究极风暴4电脑能双人吗 火影忍者究极风暴4电脑可以双人对战吗
- 究极绿宝石坚果哑铃多少级进化