摘要: 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false 第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括 阅读全文
posted @ 2025-09-10 23:09 往事携冷风 阅读(3) 评论(0) 推荐(0)
摘要: 递归 一开始就是空链表,没有任何操作需要合并。要判断list1和list2哪个链表的头节点的值更小,然后递归地决定下一个添加到 结果里的节点。如果两个链表有一个为空,递归结束。 class Solution { public: ListNode* mergeTwoLists(ListNode* li 阅读全文
posted @ 2025-09-10 23:03 往事携冷风 阅读(4) 评论(0) 推荐(0)
摘要: 步骤: 1.定义fast指针和slow指针,初始值为虚拟头结点 2.fast首先走n+1步,只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作) 3.fast和slow同时移动,直到fast指向末尾 4.删除slow指向的下一个节点 class Solution { publ 阅读全文
posted @ 2025-09-10 22:56 往事携冷风 阅读(6) 评论(0) 推荐(0)
摘要: 使用双指针法,类型:哈希表 拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。 依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i], 阅读全文
posted @ 2025-09-10 22:20 往事携冷风 阅读(5) 评论(0) 推荐(0)
摘要: class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { if(!l1) return l2; if(!l2) return l1; int target = l1->val+l2->val; Lis 阅读全文
posted @ 2025-09-10 22:13 往事携冷风 阅读(2) 评论(0) 推荐(0)
摘要: 力扣第5题 最长回文子串 本题是动态规划 使用动规五部曲 1.确定dp数组以及下标的含义 布尔类型的dp[i][j]:表示区间范围[i,j]的子串是否是回文子串,如果是dp[i][j]为true,否则为false。 2.确定递推公式 整体上就是两种,s[j]和s[j]相等,s[i]与s[j]不相等这 阅读全文
posted @ 2025-09-10 22:09 往事携冷风 阅读(7) 评论(0) 推荐(0)
摘要: 本题是滑动窗口+哈希表 class Solution { public: int lengthOfLongestSubstring(string s) { int ans = 0,left = 0; unordered_map<char,int>hash; for(int right = 0;rig 阅读全文
posted @ 2025-09-10 21:55 往事携冷风 阅读(4) 评论(0) 推荐(0)
摘要: 什么时候使用哈希法:当需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就想到哈希法。 本题不仅要知道元素有没有遍历过,还需要知道这个元素对应的下标,需要使用key value结构来存放,key存放元素,value存放下标,那么使用map正合适。 在遍历数组的时候,只需要向map去查询是否 阅读全文
posted @ 2025-09-10 17:04 往事携冷风 阅读(5) 评论(0) 推荐(0)