- 博客(98)
- 问答 (1)
- 收藏
- 关注
原创 代码随想录第48天|
启发式算法利用优先队列优先遍历某一顺序关键在于启发函数move数组用来及记录到达当前结点需要多少步 初始化为0 然后根据之前的+1.
2024-10-30 16:48:45 662
原创 代码随想录第47天|
使用队列优化bellford/spfa算法 插入起始结点:作为minDist的0 然后在队列中遍历边 进行松弛如果队列无元素了 说明松弛结束 找到minDist[end]作为当前结果。比原来的遍历所有的边效率高,只遍历需要遍历的边。为什么不会死循环:minDist在不断跟新 最后不在变化说明达到最优 不再加入节点。究竟为什么bellfordman能够n-1次松弛获得最短路径:应该是动态规划的思想每一次获得与源点隔n+1条边的最短路径 n-1次更新结束。但是本题限制了边的个数 多做松弛结果会变(负权回路)
2024-10-30 16:04:06 198
原创 代码随想录第46天|
n-1次relax 每一次relax 会找到距离当前结点隔i隔结点的最短路径 所以一共需要n-1次。遍历每一条边的to同时观察from不为INT——MAX更新 minDist更新最短路径。不能有负权值的原因可能会先便利到短边 再想用长边-负权值边不可以 贪心思想错误。使用优先队列储存边 (小顶堆不能修改元素)遍历最短边 eloge。利用{from,to,val}记录。
2024-10-28 22:41:52 165
原创 代码随想录第45天|
拓扑排序:利用unoreder_map高效获取对应关系储存邻接表 利用vector储存入度。prim算法只需要将节点以最小权值和链接在一起,不涉及到单一路径。利用队列储存入度为0的结点进行遍历。
2024-10-28 14:13:04 196
原创 代码随想录43天|
反证法:当前选择的边不是最后一条边 如果后面还有算冗余边的 是不可能的 因为删除后面冗余边 应该变成无环联通图 但是前面冗余边有环 不可能 假设失败。判断多了一条边后有无度为2的点 如果删除任意入度的边使得为联通树。并查集连接时候 如果在出现在一个集合就说明环出现了。否则有环 没太搞明白需要二刷。
2024-10-23 20:17:51 199
原创 代码随想录第42天|
看看能不能流到第一边界和第二边界 遍历每一个点进行dfs 然后检查visited所有遍历的点 flag1 flag2 这样的时间复杂度是n^2*m^2。优化解法: 记录每一个地图的面积map 记录 mark染色每个地图染不同的颜色 遍历每一个点四周的地图 都相加更新最大值。暴力解法:改变每一个点 然后去计算最大面积 n^4时间复杂度。优化:2 * n * m 反方向遍历计算重合区间。
2024-10-22 21:10:26 132
原创 代码随想录第37天|
设置dp数组代表 i j的字符串是否是回文串 然后确立遍历顺序 不断增加res。dp数组为ij的最长子序列长度。否则为两者中较大的那个。
2024-10-16 22:12:30 82 1
原创 代码随想录第32天|
树状数组:重点在于定义 当前节点的含义:下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱。原理就是:假如你考虑第一个元素就不能选最后一个 你考虑最后一个元素就不能选第一个两种情况动态规划求最大值。
2024-10-09 14:25:30 236
原创 代码随想录第32天|
总结:完全背包 观察情况如果是 排列问题先遍历背包再遍历物品 使得每一种情况都有 组合问题像便利物品 再遍历背包 否则会多计数 本体必须是排列问题 因为根据dp的结果 每个单词都必须遍历一遍 要不然有的dp为false。
2024-10-08 22:40:25 86
原创 代码随想录第25天|
思路:贪心思想优先比较 身高 然后按照队列要求插入 这是利用了 二个维度优先比较其中一个维度的原理 ,然后按照顺序插入由于之前插入的都比大于等于 所以只要插入到相应位置一定是对的。思路:从0开始找到最右边界 如果当前最右边界==i 然后找下一个边界。
2024-09-26 14:17:20 186
原创 代码随想录第22天|
思路:贪心算法 把大饼干先给胃口大的小孩 外层遍历一定要是小孩的胃口 因为小孩的胃口会一直减少 早晚有胃口小的小孩会迟到食物 但如果外层是大饼干 大饼干越来越小 小孩食量一直是最大 就会错误。思路:大概是 你设置res 和cur cur>res就更新 保证res永远是最大的值 如果当前cur小于0一定是副作用 从0开始计数。思路:没太理解需要二刷 大致理解的是遇见峰谷就+1。
2024-09-24 23:45:53 162
原创 代码随想录第22天|
思路:used数组是全排列的关键 他代表当前元素在递归中有没有被使用 同时也有第二个作用在本层循环的时候如果当前元素和前一个元素相同说明之前递归返回了 不应该选择重复元素。思路:利用unorder_SET对本层元素进行哈希储存。
2024-09-21 10:52:41 223
原创 代码随想录第20天|
如果没有重复元素 只要startIndex(i)+1就可以, 但如果有重复元素就说明即使每次startIndex(i)+1 后面的重复元素 比如两个 1 1 2 3 要生成 6 可能会生成两个 123 123 如何避免这种情况就是要在重复元素出现的时候避免重复遍历 后面的1可以看作前面的1的真子集 所有情况都是包含的。给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。中的每个数字在每个组合中只能使用。
2024-09-19 19:40:56 570
原创 代码随想录第十八天|669. 修剪二叉搜索树108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树
对于符合的 修剪左右子树 最后返回修剪完的子树。对于 不符合的 返回右子树和左子树的修剪结果。所以对于NULLreturn NULL。返回值代表修剪之后的二叉树的根节点。通过接住返回值来达到删除结点的目的。
2024-09-17 17:43:02 150
原创 代码随想录第十七天|701.二叉搜索树中的插入操作 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
这个时候如果右子树直接返回 别问我为什么左子树不行 因为这样写代码有一个通用的逻辑 否则在右子树最左边 这个时候交换val 这个时候目标节点一定没有。思路:我们需要仔细观察二叉搜索树的性质 当找到一个val在p q之间的结点就说明已经找到最近公共祖先。首先 第一次我们会遍历到我们需要删除的结点 但此时如果我们想要删除结点很麻烦。当要删除的是根节点的时候就直接返回 不需要递归 很难的题需要二刷。然后返回root 最后一直返回到主函数 返回root。delete函数返回的是被删除完的子树的根节点。
2024-09-16 13:10:58 210
原创 代码随想录第十六天|530.二叉搜索树的最小绝对差
NULL肯定返回 left或者right也返回说明这个时候已经找到目标结点了 然后我们设置两个TreeNode来承载 返回值 这时候 如果 左右都不为空 就说明当前结点是目标结点返回 如果一个为空 一个不为空 说明已经找到了目标节点直接返回上一层 都为空说明没找到返回NULL 这个时候可能有第二种情况 q或者p是祖先 逻辑一样 q直接返回 因为永远是一个节点为q一个结点为空的情况 一直返回q 题目得解。思路:需要二刷 掌握思想 记录pre结点 进行中序遍历 寻找前后关系。
2024-09-13 10:47:46 167
原创 代码随想录第十四天|513.找树左下角的值112. 路径总和106.从中序与后序遍历序列构造二叉树654.最大二叉树
思路:注意指针一定要加上& 否则 new只会改变局部变量的指针 原来的指针地址不变。路径之和需要二刷 有返回值的递归 都需要return 找好逻辑。
2024-09-11 17:41:08 183
原创 代码随想录第十三天|222.完全二叉树的节点个数110.平衡二叉树257. 二叉树的所有路径 404.左叶子之和
思路:完全二叉树性质向左遍历 向右遍历高度一样 是完全二叉树可以直接计算。logn logn 时间复杂度。
2024-09-10 20:47:49 177
空空如也
各位可以看一下有什么补充的经典模型
2024-04-07
torchtext和pytorch不兼容
2024-01-28
想问一下关于机器学习的问题
2024-01-20
我想要优化cache 利用自动对齐
2023-12-19
为什么我的setup文件打不开
2023-12-18
我用了华为弹性云服务器的centos 想开启网卡多队列
2023-12-10
大二学生大创问题求答疑
2023-10-25
关于多文件链接的有关问题
2023-01-14
关于名称空间嵌套的有关问题
2023-01-14
找不到调试器了 之前随便拉个地方然后就找不到了
2023-01-01
写了一个不分大小比较英文字符串的函数 每次输出都没有变化 各位帮我看一看哪里错了
2022-11-22
这是一个改错题 为什么最后第五个改错要把next去掉 这个pcur现在不是new吗
2022-11-16
第五个错误为什么不能把地址调换啊 这个不也能改变吗 我没太理解这个改错
2022-11-16
为什么不能这么用a《0》是地址 右边的字符串也是地址啊 用星号a表示就可以 不太理解
2022-11-05
这个为什么报错啊 我朋友问我的 我也没搞明白 是这个c加加不是c吗
2022-10-27
这是为什么啊 命令行输入一点没整明白给我我帮我看一看 最好能说一说命令行和c程序怎么结合
2022-10-25
这俩都是什么意思啊 是声明一个指针还是数组
2022-10-23
没太看明白这个*list {}是什么意思 是一个数组储存五个字符串的地址吗
2022-10-18
这里没太明白 这个ch=getchar是把scanf输入的数字再读取一遍吗
2022-10-03
为什么把n加加放在dowhlie循环里面嗯回车不能结束循环 n=0的时候为什么不能运行
2022-09-28
没太看明白这个代码 能从头到尾讲解一下吗
2022-09-20
这个a为什么也变化没搞懂.
2022-09-19
给位帮我解答一下这个问题getchar
2022-09-19
请给位帮我看一下为什么字符常量合法
2022-09-19
第六题没有看明白 求解析
2022-09-17
没看明白哇求各位解答
2022-09-15
codeblock下面的错误提醒整没了 在哪里找出来
2022-09-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人