
算法
智慧源点
计算机软件硕士,10多年大小厂互联网公司应用研发架构经验,目前从事大健康行业的研发,专注于java研发、架构、大数据、AI方向
展开
-
【算法】二分查找代码模板
/第一个>=target的数的下标(不存在为n)//最后一个<=target的数(不存在为-1)// 开始位置(lower_bound):查询第一个>=target的数。// 范围 [-1表示不存在] + [0 .. n-1 ]// 范围 [0 .. n-1 ] + [n表示不存在]// target出现在[ans[0], ans[1]]// 如果要求4位小数,就多算2~4位,到1e-6或1e-8,保证精确。// 结束位置:查询最后一个<=target的数。// 更通用的二分模板。原创 2023-07-19 20:55:48 · 118 阅读 · 0 评论 -
【算法】二叉堆代码模板
while (child < heap.size()) { // child未出界,说明p有合法的child,还不是叶子。if (heap.get(p).key > heap.get(child).key) { // 小根堆。if (heap.get(p).key < heap.get(fa).key) { // 小根堆。// 当最小被取出后,指针向后移动一位,可能需要插入新的元素。// child存较小的孩子。// 让child跟p比较。// 在答案链表的末尾插入。// O(元素个数*logK)原创 2023-07-19 20:54:33 · 57 阅读 · 0 评论 -
【算法】递归代码模板
/ 或者把剩下的全选上也不够k个,退出。// 已经选了超过k个,原创 2023-07-16 11:35:56 · 75 阅读 · 1 评论 -
【算法】组合递归模板
/ 或者把剩下的全选上也不够k个,退出。// 已经选了超过k个,原创 2023-07-16 11:35:01 · 57 阅读 · 1 评论 -
【算法】排列递归模板
i < n;dfs(0);return ans;return;i < n;i++) {原创 2023-07-16 11:33:57 · 58 阅读 · 1 评论 -
【算法】双指针夹逼模板
/ LeetCode 167 两数之和 - 输入有序数组。原创 2023-07-16 11:20:40 · 56 阅读 · 1 评论 -
【算法】差分代码模板
/ 差分要开0~n+1。// LeetCode 1109 航班预订统计。原创 2023-07-16 11:19:40 · 84 阅读 · 1 评论 -
【算法】二维前缀和代码模板
/ LeetCode 304 二维区域和检索 - 矩阵不可变。原创 2023-07-16 11:17:58 · 90 阅读 · 1 评论 -
【算法】前缀和、数组计数代码模板
/ s[i] - s[j] = k, 求j的数量。// LeetCode 1248 统计优美子数组。原创 2023-07-16 11:16:44 · 107 阅读 · 1 评论 -
【算法】单调队列模板
/ 维护队列单调性,插入新的选项。// 双端队列,存下标(代表时间)// LeetCode 239 滑动窗口最大值。// 保证队头合法性。// 取队头更新答案。原创 2023-07-16 11:12:54 · 99 阅读 · 1 评论 -
【算法】单调栈模板
/ 帮助我们在最后把栈清空。// 第二步:while (栈顶不满足高度单调性) 累加宽度,出栈。// 每个柱子入栈、出栈各一次,2n=O(n)// LeetCode 84 柱状图中最大的矩形。// 第三步:新元素入栈。// 第一步:for 每个元素。原创 2023-07-16 11:11:39 · 118 阅读 · 1 评论 -
【算法】LRU Cache
/ 在链表中插入新结点,返回新结点引用。// 重新插入到map、链表头部,维护时间顺序。// node与head的下一个点之间建立联系。// 重新插入到头部,维护时间顺序。// node与head之间建立联系。// 建立带有保护结点的空双向链表。// 从链表和map中删掉。原创 2023-07-16 11:21:57 · 73 阅读 · 1 评论