- 博客(3)
- 收藏
- 关注
原创 各种最短路径算法复杂度分析(包含队列版)(代码随想录)
que.empty()),里面依旧有一层随着出队节点遍历次数变化的循环,这个跟dijkstra不同,dijkstra是不会重复遍历已经入队的节点,而这个是会重复遍历的,只要节点相连就入队,那么整体上来看,会有很多重复入队的节点,而不是像dijkstra一样所有节点只入队一次,因此算法复杂度是不固定的,最高是每个节点都与其他节点相连的情况,每次出队一个节点,都会有n-1个节点加入,那么出队的次数相当于边的数次记为m,时间复杂度为o(m*n*logm);对于循环中包含队列的,我们把循环次数乘以入队节点个数。
2024-08-09 17:57:16
119
原创 背包与组合问题
而dp数组的定义一般根据题目要求的结果来定义,比如,在背包问题中,我们需要取出在背包一定重量下的物品中最大价值的组合,那么我们就定义dp数组为在取第i个物品时,前i个物品中背包的最大价值,又比如组合问题,在一个序列中得到满足某个条件的组合数,假设这个条件是组合和为某个数,那么我们就定义dp数组为在取第i个数时,前i个数中满足和为目标值的组合数。
2024-07-15 10:34:37
320
原创 c++递归函数的参数为STL容器引用时的使用注意事项
当容器作为函数的参数时,假设函数为run(vector nums),nums是一个对象,此时为复制构造函数构造参数nums,如果为run(vector &nums),此时则是对象引用,是直接在操作要传递进来的实参对象,与run(vector nums),直接*nums是一样的,在函数内部修改nums的内容会直接影响到外部的实参。注意在递归函数(travalsal())返回后,删除掉末尾在root->right或者root->left里面添加的节点。是指没有子节点的节点。
2024-06-18 18:20:12
837
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人