自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(644)
  • 收藏
  • 关注

原创 动态规划 路径

动态规划 路径

2021-08-15 11:18:05 850

原创 深度优先搜索 DFS

2101. 引爆最多的炸弹

2024-07-22 09:13:03 27

原创 146. LRU 缓存

146. LRU 缓存895. 最大频率栈1172. 餐盘栈460. LFU 缓存

2024-06-19 09:03:44 52

原创 《java 编程基础》试题

系 班 姓名 学号。

2024-06-17 11:14:55 523

原创 2024-5-28 刷题题单

使用了虚拟头结点的技巧,也是为了防止出现空指针的情况。例如:链表 head = [1,2,3,4,5],需要删除倒数第 5 个结点,也就是第一个节点。按照算法逻辑,应该首先找到倒数第 6 个节点。但由于头节点不存在前驱节点,因此需要在删除头节点时进行特殊判断。添加一个哑结点,让它的 next 指针指向链表的头节点,头节点的前驱节点就是哑节点本身。

2024-05-28 09:25:14 414

原创 容斥原理系列

容斥原理:指把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。假设班里有 10 个学生喜欢数学,15 个学生喜欢语文,21 个学生喜欢编程,班里至少喜欢一门学科的有多少个学生呢?最终状态(即 n)的范围非常大。试图自底向上递推或是按照通常的自顶向下回溯显然会超时(比如动态规划、DFS等方法)。第一时间应该想到二分法。

2024-04-14 13:14:18 73

原创 思维!!!

【代码】思维!!!

2024-04-13 11:42:44 57

原创 2024 春招冲刺百题计划 题单

两数相加题解中等旋转链表题解中等删除排序链表中的重复元素 II题解中等反转链表 II题解中等两两交换链表中的节点题解中等重排链表题解中等相交链表题解简单。

2024-04-07 18:03:33 78

原创 经典 topk

【代码】经典 topk。

2024-04-03 12:59:29 54

原创 七、其它线性 DP

七、其它线性 DP§7.1 一维发生在前缀/后缀之间的转移,例如从 f[i−1] 转移到 f[i],或者从 f[j] 转移到 f[i]。

2024-04-01 18:55:44 49

原创 五、状态机 DP

五、状态机 DP讲解:状态机 DP一般定义 f[i][j] 表示前缀 a[:i] 在状态 j 下的最优值。一般 j 都很小。代表题目是「买卖股票」系列。

2024-04-01 18:53:24 47

原创 四、经典线性 DP

四、经典线性 DP§4.1 最长公共子序列(LCS)讲解:最长公共子序列 编辑距离一般定义 f[i][j] 表示对 (s[:i],t[:j]) 的求解结果。

2024-04-01 18:51:12 50

原创 leetcode 估算题

TLE 在信息学竞赛及其训练中是 Time Limit Exceeded 的缩写,即时间超限,表示你提交的程序运行使用了超出题目限定的时间,故该数据点不得分,通常出现在信息学竞赛在线评测系统(Online Judge)的错误反馈,是信息学竞赛常用的术语之一。4、在OJ评测时加入了文件读写。由于无法读取到输入而时间超限。2、算法效率较低(时间复杂度过高)。

2024-03-08 15:56:00 225

原创 Java 存图方式

链式前向星是一种完全用数组存储图的邻接表的存储结构,插入、遍历的复杂度都是O(E)[E为边的数量];用树的思维无法解决的问题,可以使用图的思维来解决。

2024-02-25 17:34:01 383 1

原创 十二、树形 DP

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。两节点之间路径的 长度 由它们之间表示。

2024-02-24 13:15:53 82

原创 石子游戏 I - IX

数学n 堆石子,按下标偶奇性分成二组。Alice 可以决定 Bob 只能取石子数量小的一组。Alice 总是可以赢得比赛。先手的 Alice 可以自由选择取走一组或二组的一堆石子。如果 Alice 决定取 piles[0],则剩下的部分在开始处和结束处的石子堆都属于第二组,因此 Bob 只能取走第二组的一堆石子。如果 Alice 取 piles[n - 1],则剩下的部分在开始处和结束处的石子堆都属于第一组,因此 Bob 只能取走第一组的一堆石子。

2024-02-03 13:33:03 123

原创 【扩散】元素

【代码】【扩散】元素。

2024-01-30 09:24:58 83

原创 消除类题目

【代码】消除类题目。

2024-01-22 09:29:50 75

原创 java split

limit :数组中字符串的数量限制。如果它为零,它将返回所有匹配正则表达式的字符串。regex : 应用于字符串的正则表达式。返回值:array of strings。

2024-01-20 11:27:40 417

原创 十一、数据结构优化 DP

单调栈上二分, Java 官方推荐使用 Deque 来模拟栈,Deque 没法直接通过下标检索(来实现手写二分),引入 TreeMap 辅助。floorEntry 方法找到第一个小于或等于指定 key 的 Map.Entry。ceilingEntry 方法找到第一个大于或等于指定key的 Map.Entry。java 数组模拟单调栈。

2024-01-10 20:33:50 274

原创 括号 系列

【代码】Leetcode 基础题。

2024-01-07 12:36:22 407

原创 树上倍增法求最近公共祖先 LCA

倍增其实就是二分的逆向,二分是逐渐缩小范围,而倍增是成倍扩大。用于解决一些静态树的查询问题。

2024-01-06 14:05:14 453

原创 Leetcode 超难题目 Hard

这道题很有可能是LC主站(LCP除外)新的天花板,之所以难度分没有超过1719题,是因为双周赛样本量本身不多,而这题有一定的“猜结论”。某个LC积分2900+的大佬认为,即使数据范围只有1000,这也是一道相当难的题目。因为记录dp[j]为最优时,nums[j]的最小值(注意nums[j]很可能是被改过的),这样的DP本身就很难想到。而同时保证dp[j]最大nums[j]最小是否就更利于后面的转移,这点非常难证明。这个题的数据范围并不是1000,因此需要单调数据结构优化来保证复杂度合理。

2024-01-05 19:28:17 1080

原创 矩阵对角线遍历

【代码】矩阵对角线遍历。

2023-12-31 09:29:39 813

原创 面积最大的蛋糕

1465. 切割后面积最大的蛋糕2943. 最大化网格图中正方形空洞的面积100169. 移除栅栏得到的正方形田地的最大面积

2023-12-24 14:03:55 106

原创 中位数 Median

462. 最小操作次数使数组元素相等 II2033. 获取单值网格的最小操作数2448. 使数组相等的最小开销2607. 使子数组元素和相等1703. 得到连续 K 个 1 的最少相邻交换次数2967. 使数组成为等数数组的最小代价564. 寻找最近的回文数

2023-12-18 13:14:24 506

原创 合并区间 Merge intervals

用一个哈希表/有序集合记录每个元素首次出现的位置和最后一次出现的位置,每个元素就对应着一个不可分割的区间。所以 [1,2,1,2][1,2,1,2] 这一段必须是完整的,不能分割。如果第二个区间和第一个区间没有交集,把合并后的区间个数 m 加一。如果第二个区间和第一个区间有交集,那么合并区间,维护合并后的区间的右端点 maxR。把该数组分到无法再分,得到 [3] + [1,2,1,2] + [4,4]再次遍历数组,那么第一个区间就是 [0, r[nums[0]]]。考虑每个 + 号选或不选,一共有 2。

2023-12-10 19:22:06 529

原创 快速幂 FastPower

的顺序,从 x 开始,每次直接把上一次的结果进行平方,计算 6 次就可以得到 x。的值,而不需要对 x 乘 63 次 x。「快速幂算法」的本质是。

2023-12-10 18:42:37 121

原创 二进制枚举

78. 子集77. 组合1286. 字母组合迭代器2397. 被列覆盖的最多行数2212. 射箭比赛中的最大得分1601. 最多可达成的换楼请求数目

2023-12-10 16:49:40 86

原创 List add、addAll 和 set

Java 中线性表 List 接口的插入方法有三大类,add、addAll 和 set。

2023-12-07 12:16:51 313

原创 离散化 Discretization

*离散化有一个很重要的前提:**只关心数据之间的相对大小关系。离散化,把无限空间中有限的个体映射到有限的空间中去。离散化是在不改变数据相对大小的条件下,对离散的数据进行相应的范围缩小。离散化过程,将一组实数转换为一组整数,使得原始数据的顺序和区间关系得以保留。将原始数据排序,然后为每个不同的值分配一个整数。这个整数是该值在排序后出现的位置,即离散化后的数值。

2023-12-05 15:01:06 132

原创 偏序 Partial Order

则称 P 是 A 上的一个偏序关系,通常记作 ≼。注意这里的 ≼ 不必是指一般意义上的"小于或等于"。若 P 是 A 上的一个偏序关系,用 a ≼ b 来表示 (a, b) ∈ P。整除关系便是一个定义在自然数上的一个偏序关系 |,3 | 6 的含义是 3 整除 6。大于或等于也是定义在自然数集上的一个偏序关系。

2023-11-20 22:01:07 384

原创 Java Integer.numberOfLeadingZeros()

对 i 进行判断,因为 int 型长度为 32,所以先判断 i 是不是大于 2^16,如果大于则无符号右移 16位,继续进行计算。例:10 的二进制为:0000 0000 0000 0000 0000 0000 0000 1010。返回无符号整型 i 的最高非零位前面的 0 的个数,包括符号位。如果 i 小于 0 则返回 0,等于 0 则返回 32。判断为 true,得到 n = 15,i = 4;判断为 true,得到n = 13, i = 1;最后相当于 13 - 0 = 13。

2023-11-18 12:43:23 211

原创 Python 简易 HTTP 服务器

对于局域网的其他用户,可通过你的主机 IP + 端口号访问,如你的主机 IP是192.168.0.1,那么将网址 192.168.0.1:8000 发送给你的同事或同学,他们也可以看到 index.html 文件渲染的内容。如果通过 VSCode 连接远程服务器,使用 http.server 开启一个端口后,会自动映射到本地,这样在本地浏览器就能查看和下载远程服务器资源。(除 VSCode 外,其他工具应该也可以实现远程与本地的端口映射)http.server 也支持在代码中调用,导入对应的类和函数即可。

2023-11-18 11:00:00 715

原创 字典树 Trie

的每个节点只有两个孩子,那如果每个节点可以有多个孩子呢?这就形成了「多叉树的子节点数目一般不是固定的,所以会用变长数组来保存所有的子节点的指针。」是一种特殊的多叉树,它的 TrieNode 中 chidren 是一个大小为 26 的一维数组(当输入只有小写字符),分别对应了 26 个英文字符 ‘a’ ~ ‘z’,也就是说形成了一棵「26 叉树」。Trie(发音类似 “try”),又称前缀树或字典树是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如。

2023-11-12 14:36:22 277

原创 TreeMap

【代码】TreeMap。

2023-11-12 10:27:44 122

原创 Java TreeMap

TreeMap 是一个基于 keykey value 散列表。

2023-11-12 10:10:52 268

原创 内向基环树

如果找到了一个之前访问过的点xx,且之前访问 x 的时间不早于 startTime,则说明找到了一个新的环,此时的环长就是前后两次访问 x 的时间差,即 clock−time[x]。基环树的关键就是找到环,可以先把环当作这个无根树的 “根” ,也就是把环当成一个点(先不管它),这样一颗基环树就变成了一个普通的树,然后先按照解决普通树的方法对“根”的所有子树依次处理求解答案,最后在单独对环上所有的点进行操作求解最终答案即可。对于不在基环上的点 x,其可以访问到的节点数,是基环的大小,再加上点 x 的深度。

2023-11-11 22:14:13 465

原创 Gosper‘s Hack

例如 二进制数 110110,我们需要找到它从左往右的最后一个 01,然后把这个 01 变成 10,再把它右边的 1 全部集中到最右边(这里右边的 1 显然都是连续的,否则与最后一个 01 矛盾),即 110110→111001。上面的代码有很多无效枚举,即大小不等于 cols 的集合,每次也要枚举进来。Gosper’s Hack 算法,让每次枚举的二进制数 1 的个数恰好等于 cols。Gosper’s Hack 是生成 n 元集合中所有包含 k 个元素的子集的算法。

2023-11-02 09:14:17 408

原创 2262. 字符串的总引力

据此,我们在从左往右遍历 s 的同时,对每个字母 s[i] 记录其上一次出现的下标 last[s[i]] 和上上一次出现的下标 prelast[s[i]]。记录字符 s[i] 上一次出现的位置为 pre(默认为 -1),加上 s[i] 之后,只会影响区间 (pre, i] 内所有以字符 s[i] 结尾的子串引力值,子串个数为 i - pre 即增加的引力值。特别地,如果 last[s[i] 或 prelast1[s[i]] 不存在,可以视作 −1,从而保证上式的正确性。

2023-10-29 14:11:08 301

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除