402. 移掉 K 位数字
题目 原题 402. 移掉 K 位数字 解题 思考一下该使用什么样的策略去移除数字会让最终的数字尽可能的小:保证高位数字一定要尽可能的小,那么最终得到的数字就是最小的数字。本质上我们可以维护一个单调栈去实现这个策略。 注意事项 单调栈在维护的过程中,可能过早的消耗完 k 个可以被删除的字符,也可能没有完全消耗掉 k 个字符 针对 k 没有被全部消耗的情况,我们从后...
题目 原题 402. 移掉 K 位数字 解题 思考一下该使用什么样的策略去移除数字会让最终的数字尽可能的小:保证高位数字一定要尽可能的小,那么最终得到的数字就是最小的数字。本质上我们可以维护一个单调栈去实现这个策略。 注意事项 单调栈在维护的过程中,可能过早的消耗完 k 个可以被删除的字符,也可能没有完全消耗掉 k 个字符 针对 k 没有被全部消耗的情况,我们从后...
题目 原题 3175. 找到连续赢 K 场比赛的第一位玩家 解题 直接按照题目使用模拟的思路,会导致超时;对 k>skills.length() 的情况直接返回具有 maxSkill 的 index 能够解决这个模拟方法的超时问题。 下面分析一下题目中隐含的一些思路 如果 1 个 player 后面的 t 个 players 的 skill 值都比他低,那么这个...
全文索引? 全文索引可以加速文本搜索过程 TODOs ClickHouse 集成 TantivySearch 工作概览 TantivySearch 项目结构 TantivySearch 不同搜索策略的实现(设计模式之策略模式) ClickHouse 集成 tantivy-search 库 ClickHouse 对 FTS 索引的管理逻辑 ClickHouse ...
题目 原题 525.连续数组 解题 1.未优化版本 滑动窗口思想 最先想到的是使用滑动窗口的方法,先使用 preOneCount[i] 计算 [0,i] 区间内 1 出现的次数,然后通过从大往小遍历滑动窗口 window 去检测窗口是否合法(即窗口所在的区间内部 1 和 0 的数量是否一致) 代码如下: class Solution { public int fi...
题目 原题 54.螺旋矩阵 解题 进行螺旋遍历🌀的本质实际上是找到每个需要遍历的边 遍历最上侧的边 top, 遍历完毕后将 top++。 遍历最右侧的边 right, 遍历完毕后将 right–。 遍历最底部的边 bottom, 遍历完毕后将 bottom–。 遍历最左侧的边 left, 遍历完毕后将 left++。 注意: 每次在遍历的时候都将...
题目 原题 1074.元素和为目标值的子矩阵数量 解题 这个题目直接使用暴力方法竟然能 AC… 暴力思路是:先计算出二维数组的前缀和并存储下来,然后使用 O(n^4) 枚举所有可能出现的子矩阵位置(枚举左上角的坐标和右下角的坐标即可),然后通过存储的前缀和去计算出每个子矩阵的 sum,判断是否符合 target。 现在需要探讨的是使用 HashMap 去优化这个 O(n^4...
题目 原题 477.汉明距离总和 题解 直接使用暴力方法计算 total hamming distance 会超时: class Solution { public int totalHammingDistance(int[] nums) { int res =0; for (int left =0; left< nums.len...
2024/11 拍摄于 798 艺术中心
红黑树平衡性原则 根结点是黑色(有的版本对根结点的颜色没有强制要求) 所有节点只能是红色或者黑色 所有的叶子节点都是黑色,这里说的叶子结点是 NULL 叶子结点 如果一个节点是红色的,那么它的两个孩子只能是黑色的(即不能同时出现两个连续的红色节点) 从任意的一个节点出发,到它的所有叶子节点路径上都包含相同数量的黑色节点 另外,看似使用全部黑色的节点也符合红黑树的规...
存储字节数组(u8)数组时,涉及到的一些字符存储格式记录 说明 #[cfg(test)] mod test { #[test] pub fn test_character_encode() { /* * char 类型占据 4 个字节,支持所有的 Unicode 字符 * u8 类型占据 1 个字节,适用于所有的 AS...