jmhjmhjmh
jmhjmhjmh
全部文章
未归档
归档
标签
去牛客网
登录
/
注册
jmhjmhjmh的博客
全部文章
/ 未归档
(共29篇)
使库存平衡的最少丢弃次数
用哈希表统计当前窗口内每种物品的保留次数; 遍历每天的物品: 先尝试保留当前物品,若保留后该物品次数超过m,则丢弃 当遍历天数超过w时,滑动窗口左边界,移除i-w+1天的物品,减少其计数。 class Solution { public: int minArrivalsToDiscard(v...
C++
2025-12-12
0
28
包含所有三种字符的子字符串数目
滑动窗口 ,直接统计合法子串用滑动窗口维护[left, right]区间,保证区间内包含所有字符,当窗口满足条件时,所有以right为结尾、以[0, left-1]为起点的子串都合法,数量为left; 移动左指针缩小窗口,继续统计。 class Solution { public: int ...
C++
2025-12-12
0
39
荷马史诗
为了满足题目中每个编码都不能是另一个前缀,因此用哈夫曼树可以实现,k进制就是k叉的哈夫曼树,哈夫曼树的带权路径和就是编码长度,树高就是字符串长度。 用最小优先队列实现最优合并,核心思路是先补 0 使节点数满足 k 叉哈夫曼树的结构要求,再循环取出权值最小的 k 个节点合并,累加求权值和,记录合并后节...
C++
2025-12-04
0
37
二叉树的中序遍历
利用栈实现中序遍历,先遍历到左子树最深处并将路径节点入栈,弹出栈顶节点(根)记录值,再遍历其右子树,重复该过程直至所有节点处理完毕。 class Solution { public: vector<int> inorderTraversal(TreeNode* root) { ...
C++
2025-12-04
0
40
恢复二叉搜索树
对二叉搜索树进行中序遍历,用数组保存结点,用另一个数组保存结点的值,然后找到值错误的两个结点,然后直接交换值就行 class Solution { public: void recoverTree(TreeNode* root) { vector<int> va...
C++
2025-12-04
0
34
验证二叉搜索树
对每个结点的左子树和右子树进行递归验证是否为二叉搜索树,如果左右子树都是二叉搜索树且与根节点比较没问题,然后返回true class Solution { public: bool isValidBST(TreeNode* root) { return dfs(root, L...
C++
2025-12-04
0
32
不同的二叉搜索树 II
用分治递归生成所有合法的二叉搜索树: 在区间[left, right],我们依次选每个值i作为根节点,递归生成左子树区间和右子树区间的所有可能结构,再将左、右子树的所有组合与根节点拼接,得到当前区间的所有二叉搜索树。 class Solution { public: vector<Tr...
C++
2025-12-04
0
34
最长有效括号
用栈记录括号的下标,通过栈顶元素定位有效括号的起始位置,计算最长长度。若遇到左括号,将其下标入栈;若遇到右括号,先弹出栈顶元素,若弹出后栈为空,说明当前右括号是新的无效起始点,将其下标入栈;若栈非空,用当前下标减去栈顶元素,得到以当前右括号为结尾的有效括号长度,更新最大长度,以下是代码解析: cl...
C++
2025-12-04
0
38
柱状图中最大的矩形
核心是用单调递增栈快速定位每个柱子的左右边界,计算以该柱子为高的最大矩形面积,然后取所有最大矩形最大值 以下是代码解析: class Solution { public: int largestRectangleArea(vector<int>& ...
C++
2025-12-04
0
41
首页
上一页
1
2
3
下一页
末页