More content:LeetCode hot100@栈 96. 下一个更大元素 I✅ 单调栈 + 哈希 class Solution { public: vector<int> dailyTemperatures(vector<int>& temperatures) { stack<int> sk;…
More content:力扣题记之栈 栈:stack<int> sk; 队列: queue<TreeNode*> q; 单端队列 deque<char> dq; 双端队列(更底层) 20. 有效的括号✅ 刷包浆的题 class Solution { public: bool isValid(string s) …
More content:LeetCode hot100@二叉树 257. 二叉树的所有路径❌ 递归回溯 递归三步走,但要注意在二叉树的递归中单层逻辑一般要包括中左右三部分(顺序依前中后遍历而定) class Solution { public: void traversal(TreeNode *cur, vector<string> …
More content:力扣题记之二叉树 链式存储的二叉树节点定义方式: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 二叉树递归求深度用前序,求高度用后序 C+…
单链表定义方式: struct ListNode { int val; // 节点上存储的元素 ListNode *next; // 指向下一个节点的指针 ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数 }; STL链表:list<int> mylist; 是一个双向循环链表,不需要关心节…
73. 矩阵置零✅ Solution1:先把零的位置找出来,用二维数组存起来,但这样额外空间是O(mn) Solution2改进:仅使用常量空间,即O(1) class Solution1 { public: void setZeroes(vector<vector<int>>& matrix) { int m = …
53. 最大子数组和❌ 贪心:不能让“连续和”为负数的时候加上下一个元素(因为直接把前面这一堆和为负数的子串抛弃就回来,后面怎么也会比加上个负数更大),而不是不让“连续和”加上一个负数(加上负数也没事,只要整体还算大) class Solution { public: int maxSubArray(vector<int>& n…
滑动窗口大致逻辑: int left = 0, right = 0; while (right < s.size()) { // 增大窗口 window.add(s[right]); right++; while (window needs shrink) { // 缩小窗口 window.remove(s[left]); l…
35. 搜索插入位置✅ 二分模板题 class Solution { public: int searchInsert(vector<int>& nums, int target) { int left = 0, right = nums.size() - 1, mid; while(left <= right) { mi…
双指针法:通过两个指针在一个for循环下完成两个for循环的工作,一般是将O(n^2)的时间复杂度,降为O(n) 283. 移动零✅ 简单模拟 不改变数组内元素的相对位置 复杂度O(n) class Solution { public: void moveZeroes(vector<int>& nums) { int slow …