2024.06.26 刷题日记 20. 有效的括号利用栈: 1234567891011121314class Solution {public: bool isValid(string s) { std::map<char, int> m = {{'(', -1}, {')', 1}, 2024-06-26 LeetCode #算法 #数据结构 #leetcode
2024.06.25 刷题日记 704. 二分查找这种题有多种写法,我认为应该固定一种写法,从而养成自己的编程直觉,不然很容易造成思维混乱。二分查找说难不难,说简单也不简单。最难的点就是处理边界条件,有时候多个等号会通过,少个等号就通过不了关键是还不知道为什么能过。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标 2024-06-25 LeetCode #算法 #数据结构 #leetcode
2024.06.24 刷题日记 17. 电话号码的字母组合依然是昨天的回溯,思路是根据 index,来确定要回溯的对象: 1234567891011121314151617181920212223242526272829303132class Solution {public: vector<string> letterCombinations(string digits) { 2024-06-24 LeetCode #算法 #数据结构 #leetcode
2024.06.23 刷题日记 〇、前言今天重点刷了回溯,以及常见的题目。 46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1]输出:[[0,1] 2024-06-23 LeetCode #算法 #数据结构 #leetcode
2024.06.22 刷题日记 199. 二叉树的右视图这道题目的思路就是层次遍历,然后每次处理每一层所有的元素,如果是第一个就收集到答案中: 123456789101112131415161718192021222324252627class Solution {public: vector<int> rightSideView(TreeNode* root) { if 2024-06-23 LeetCode #算法 #数据结构 #leetcode
2024.06.21 刷题日记 101. 对称二叉树判断是否对称,检查 root->left->val == root->right->val,接着进行递归检查对称位置: 12345678910111213141516171819class Solution {public: // 传入对称位置的两个对称位置 bool isMirror(TreeNode* left 2024-06-21 LeetCode #算法 #数据结构 #leetcode
2024.06.20 刷题日记 2. 两数相加这道题目的思路就是模拟,好处是逆序的,不用反转链表: 1234567891011121314151617181920212223242526272829ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { // 创建一个新的链表节点,作为返回结果的头节点 ListNode* dummyHead 2024-06-20 LeetCode #算法 #数据结构 #leetcode
2024.06.19 刷题日记 41. 缺失的第一个正数这个题目的通过率很低,是一道难题,类似于脑筋急转弯,确实不好想。实际上,对于一个长度为 N 的数组,其中没有出现的最小正整数只能在 [1,N+1] 中。 这个结论并不好想,举个例子:nums = [3,4,-1,1],长度为 4,未出现的最小正数是 2;极端一点,nums = [1,2,3,4],未出现的最小正数是 5。因此算法的第一步就是预处理,将这个范围之外的数全部 2024-06-19 LeetCode #算法 #数据结构 #leetcode
2024.06.18 刷题日记 76. 最小覆盖子串这道题目的思路是利用哈希表来存储字符串的字符出现的频率,然后利用滑动窗口来确定是否包含目标串,如果没有包含,就继续滑动右指针。当子串已经包含的时候,就收缩窗口,更新答案,以及右移 left。 12345678910111213141516171819202122232425262728293031323334353637383940414243class Solution 2024-06-18 LeetCode #算法 #数据结构 #leetcode
2024.06.17 刷题日记 42. 接雨水这道题的关键点是基于贪心策略,同时设置双指针,left_max 追踪左边的最大值 height[left],right_max 同理。如果 height[left] < height[right],那么就可以收集雨水,雨水量为 water += left_max - height[left],同时右移左指针;反之同理: 1234567891011121314151 2024-06-18 LeetCode #算法 #数据结构 #leetcode