- 博客(29)
- 收藏
- 关注
原创 day 48 (代码随想录单调栈部分) 739. 每日温度| 496.下一个更大元素 I |503.下一个更大元素II
496.下一个更大元素 I。503.下一个更大元素II。
2024-09-03 13:04:06
229
原创 day30(代码随想录补卡) 452. 用最少数量的箭引爆气球| 435. 无重叠区间 |763.划分字母区间
452. 用最少数量的箭引爆气球。435. 无重叠区间。763.划分字母区间。
2024-09-02 19:52:13
313
原创 day28 (代码随想录补卡) 122.买卖股票的最佳时机II | 55. 跳跃游戏|45.跳跃游戏II|1005.K次取反后最大化的数组和
1005.K次取反后最大化的数组和。122.买卖股票的最佳时机II。
2024-08-30 17:05:51
240
原创 day27 (代码随想录补卡)455.分发饼干|376. 摆动序列|53. 最大子序和
【代码】day27 (代码随想录补卡)455.分发饼干|376. 摆动序列|53. 最大子序和。
2024-08-30 16:39:24
287
原创 day 25 (代码随想录补卡)491.递增子序列|46.全排列 |47.全排列 II
【代码】day 25 (代码随想录补卡)491.递增子序列|46.全排列 |47.全排列 II。
2024-08-30 11:29:34
294
原创 day 24 (代码随想录补卡) 93.复原IP地址 | 78.子集 | 90.子集II
【代码】day 24 (代码随想录补卡) 93.复原IP地址 | 78.子集 | 90.子集II。
2024-08-29 18:55:40
301
原创 day23(代码随想录补卡)39. 组合总和 |40.组合总和II|131.分割回文串
【代码】day23(补卡)39. 组合总和 |40.组合总和II|131.分割回文串。
2024-08-27 23:34:56
220
原创 day 22 (代码随想录补卡)77. 组合|216.组合总和III |17.电话号码的字母组合
17.电话号码的字母组合。216.组合总和III。有点难,需要多刷理解。
2024-08-27 18:26:15
239
原创 day21(代码随想录补卡) 669. 修剪二叉搜索树 |108.将有序数组转换为二叉搜索树|538.把二叉搜索树转换为累加树
108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。该题挺难,一刷就跟着写理解了。669. 修剪二叉搜索树。
2024-08-25 13:30:13
214
原创 day 20 (代码随想录补卡)235. 二叉搜索树的最近公共祖先 | 701.二叉搜索树中的插入操作 | 450.删除二叉搜索树中的节点
235. 二叉搜索树的最近公共祖先题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/submissions/558227553//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *
2024-08-25 01:24:17
252
原创 day18(代码随想录补卡)530.二叉搜索树的最小绝对差|501.二叉搜索树中的众数 |236. 二叉树的最近公共祖先
本题的回溯遍历有点绕,需要多理解。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。
2024-08-23 19:14:10
260
原创 day 17(代码随想录补卡) 654 最大二叉树|617 合并二叉树|700 二叉搜索树中的搜索|98 验证二叉搜索树
700 二叉搜索树中的搜索。98 验证二叉搜索树。
2024-08-19 17:29:20
194
原创 day15(一刷代码随想录补卡)110 平衡二叉树| 257 二叉树的所有路径|404 左叶子之和 |222完全二叉树的节点个数
222.完全二叉树的节点个数。257 二叉树的所有路径。
2024-08-15 10:20:02
273
原创 day14(代码随想录补卡)226.翻转二叉树| 101. 对称二叉树
思路:分别比较内侧和外侧的元素是否相等,左子树遍历顺序是左右中,右子树遍历顺序是右左中。101. 对称二叉树。
2024-08-14 09:38:09
316
原创 代码随想录day13(补卡) 二叉树部分 递归遍历前序后序中序144|145 |94 层序遍历 102|107|199|637|429|515|116|117|104|111
思路:由队列先进先出特性完成广度优先搜索遍历,队列的size很重要,弹出size个元素标志二叉树每层有多少个元素。思路:判断是否遍历到单层的最后面的元素,如果是,就放进result数组中,最后返回result。144 二叉树的前序遍历|145 二叉树的后序遍历|94 二叉树的中序遍历。思路:当左右孩子为空的时候可以判定,这是遍历的叶子结点了,也就是最小深度。思路:反转result数组得自底向上的层序遍历。思路:最大的深度就是二叉树的层数。107 二叉树的层序遍历||102 二叉树的层序遍历。
2024-08-10 10:37:47
1492
原创 代码随想录day11(补卡) 150. 逆波兰表达式求值 | 239. 滑动窗口最大值 | 347.前 K 个高频元素
思路:针对前K个高频元素,需要完成统计元素出现的频率、对频率排序、找出前k个高频元素这三步操作。利用小顶堆来统计最大前k个元素,每次将出现频率最小的元素弹出。题目挺难,需要多刷几次加深印象。思路:该题只能看卡哥的题解了,题目个人认为相当难了。要自己实现一个单调递减队列的类,还有不少判定条件。所以该题照着写了一遍以理解。思路:逆波兰式是后缀表达式,相当于后续遍历,用栈来实现,本题较容易。150. 逆波兰表达式求值。239. 滑动窗口最大值。347.前 K 个高频元素。
2024-07-30 11:37:24
594
原创 代码随想录day10 232.用栈实现队列|225. 用队列实现栈| 20. 有效的括号|1047. 删除字符串中的所有相邻重复项
判断字符串是否有效。要分清楚括号不匹配的三种情况, 1、左括号多余不匹配 2、括号类型没匹配上 3、右括号多余不匹配。思路:用两个栈来实现队列元素的进出操作。思路:用一个队列加循环操作实现栈的出入。1047. 删除字符串中的所有相邻重复项。思路:用栈来实现相邻元素匹配的消除操作。225. 用队列实现栈。思路:给定一个只包括。232.用栈实现队列。
2024-07-13 23:30:14
249
原创 代码随想录day9 151.翻转字符串里的单词| 卡码网:55.右旋转字符串
思路:采用快慢指针,首先移除多余的空格,再整体反转,最后再进行一次单词反转。思路:整体倒叙,把两段子串顺序颠倒,两个段子串里的的字符再颠倒一次。151.翻转字符串里的单词。卡码网:55.右旋转字符串。用KMP做的算法题先理解。
2024-07-12 21:50:40
255
原创 代码随想录算法训练营day8 344.反转字符串| 541. 反转字符串II|卡码网:54.替换数字
思路:使用C++中的库函数reverse来进行反转。每次间隔取2k个字符,只反转前k个字符,剩余字符小于2k但大于或等于k个,则翻转前k个字符,剩余字符少于k个,则将剩余字符全部反转。按照这个逻辑写代码。思路:用ACM模式写代码有些不习惯,还要多熟悉。对于数组填充类问题,预先给数组扩容带填充后的大小,然后从后向前进行操作。思路:使用库函数swap()解决字符反转。541. 反转字符串II。卡码网:54.替换数字。
2024-07-11 21:56:38
324
原创 代码随想录算法训练营day7 454.四数相加II| 383. 赎金信| 15. 三数之和
思路:使用哈希法的map去处理,key放nums1和nums2的和,value放nums1和nums2和出现的次数,然后遍历和和次数放入map中,nums1+nums2+nums3+nums4=0;最后返回count即可。思路:用双指针,去重操作较繁琐,用起来很麻烦。要求找到abc 使得a + b +c =0,其中 a = nums[i],b = nums[left],c = nums[right]。思路:和有效字母异位词一样,用哈希法的数组这一数据结构实现,不难。454.四数相加II。
2024-07-10 16:38:37
317
原创 代码随想录算法训练营day6 242.有效的字母异位词| 349. 两个数组的交集| 202. 快乐数 | 1. 两数之和
思路:该题较难,用到了哈希法里的map数据结构,map中的数据是以<key,value>形式储存的,key来存元素,value来存下标,同时也用到了迭代器的概念。map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(相加等于target)。std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。
2024-07-09 17:10:20
763
原创 代码随想录算法训练营day4补录 24. 两两交换链表中的节点 |19.删除链表的倒数第N个节点 | 面试题 02.07. 链表相交| 142.环形链表II| 707设计链表
环的入口可用快慢指针解决,先固定快指针每次走两格,慢指针每次走一格,这样就有数学关系2(x+y) = n(y+z)+x。其中x表示head节点到环的入口节点处,y表示环中入口到快慢节点相遇的节点的距离,z表示相遇节点到入口的距离。思路:虚拟头结点同样需要,两两交换需要设置两个tmp1、tmp2保存临时节点,边界条件也要注意,区分偶数个链表和奇数个链表。思路:删除倒数第N个节点,可用快慢指针解决;目的要求快指针与慢指针的间隔为N即可,又因为要删除节点需要知道删除节点的前驱节点,由前驱节点来操作删除事宜。
2024-07-07 19:43:13
228
原创 代码随想录算法训练营day3 203. 移除链表元素|206. 反转链表
203. 移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/思路:单链表问题,移除某一位置链表元素需要明确知道该元素的直接前趋,为了避免不必要的麻烦,创建了虚拟头节点并用完之后及时释放,做链表问题时要明确dummyhead->next什么时候是节点什么时候是指针。该题不难。class Solution {public: ListNode* removeElemen
2024-07-05 23:39:20
373
原创 代码随想录算法训练营day2 977有序数组的平方|209长度最小的子数组|59螺旋矩阵
思路:使用滑动窗口,不断的调节子序列的起始位置和终止位置,直到找到最小的子数组满足大于等于target。该题较难,难在滑动窗口的起始位置和终止位置的表示,看了视频没看懂,后续复盘时需解决这个问题。ret取最大值INT32_MAX方便回滚。思路:注意边界条件,应用循环不变量条件简化思考过程,本题不难。注意变量定义是在循环内定义还是在循环外定义和一些其他细节,可能导致测试用例通过不全。思路:双指针思想,i指向起始位置,j指向终止位置;每次遍历比较i*i和j*j,把较大的传给新数组arr。977有序数组的平方。
2024-07-04 23:45:32
242
原创 代码随想录day1-二分查找和移除元素
思路:设置左右指针,注意边界,左闭右闭还是左闭右开,两种情况解法略有不同。左闭右闭时right = nums.size()-1;左闭右开时right = nums.size();一个for循环用于遍历需要移除的等于val的数值,另一个for循环用于将后面的数值一一覆盖等于val的数值的位置。双指针思路:设置快慢指针,执行一次for循环,快指针用于查找数组nums中不等于val的值,慢指针用于接收快指针反馈下来的值组成新数组。收获: 复习了二分查找的使用,注意了边界区间。
2024-07-03 23:48:20
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人