- 博客(105)
- 收藏
- 关注
原创 6.9-字典序的第K小数字
如果子树 1 的大小(节点个数)≤k,那么答案不在子树 1 中。把 k 减去子树大小,然后考虑下一个儿子 2,依此类推。首先访问 1 的儿子 10,把 k 减一。,19,计算子树大小,比较子树大小与 k 的大小关系,依此类推。问:为什么判断条件是子树大小 ≤k 而不是 <k?答:因为当我们访问到子树根节点时,就把 k 减一了。这时再算子树大小,就把根节点重复统计了,所以是子树大小减一 <k,即子树大小 ≤k。所以先序遍历访问到的第 k 个节点就是答案。由于该节点被我们访问了,先把 k 减一。
2025-06-09 14:25:39
251
原创 bfs-最小步数问题
思路很简单,初始状态和结束状态都已知,要求解最小步数和字典序最小的操作序列,也就是在上个题目的基础上,在bfs的时候要记录当前层的状态是由上一层的哪个状态,通过哪种方式进行转换得到的,所以需要记录路径,根据分析可知,需要用一个哈希表存储,key为当前状态,value需要涵盖上一个状态(String)和操作(char) ,所以这里的map类型为<String, PII>,具体见代码。记录完毕这个路径以后,要获得正序的操作数,需要遍历存储的pre,然后再倒序输出即可,思路不难,代码很长。
2025-05-14 23:20:36
634
原创 一文解决区间dp问题
这一段石子合并成一堆的方案的集合,属性为Min.依据上图的状态计算可以得到最终的答案就是f[1][n].采用闫式dp分析法,本题的关键点在于:最后一次合并一定是左边连续的一部分和右边连续的一部分进行合并。对于一段区间的元素进行操作,操作必须是连续的,求解,在这段区间上的属性(,并且一般 len = 1 时用来初始化,枚举。/ Max),考虑动态规划的考虑方式。第二维枚举起点 i (右端点 j。所有的区间dp问题枚举时,
2024-10-30 21:59:31
379
原创 java中的字符串处理模拟-新手必看
请你写一个函数 StrToInt,实现把字符串转换成整数这个功能。当然,不能使用 atoi 或者其他类似的库函数。数据范围输入字符串长度 [0,20]。样例输入:"123"输出:123注意你的函数应满足下列条件:忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’ 表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数;整数后可能有任意非数字字符,请将其忽略;如果整数长度为 0,则返回 0;如果整数大于 INT_MAX(231−1),请返回 INT_MAX;
2023-12-12 23:33:05
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人