- 博客(7)
- 收藏
- 关注
原创 Leetcode刷题Day5
对于每个数组元素则是进行是否选取的决策,但是在决策之前,按照0-1背包的思路,应该先判断是否装满了背包,也就是对于每个。看到这种样本量对回溯手段而言比较大但是本身又不算大的问题,应该考虑往动态规划上面靠,本题就是一个0-1背包的变式,我们可以想到开一个二维的布尔型dp数组,对于。级别,因此回溯的手段一般仅限于小样本数据(n为二十多一点已经是时间限制内回溯问题的极限了),所以本题不能采用回溯的手段,如果本题的样本量是。的意思,之后我们考虑dp的状态转换,对于每一列,则是背包大小为。之间的大小关系,如果。
2025-04-07 18:12:19
215
原创 Leetcode刷题Day4
我们回想一下刚才的方法,发现其实我们记录的内容并不是全部都用得上,最后只会使用那个最大的值,因此这个过程中造成了数据冗余,所以考虑只使用一个变量来记录最值。首先,对于枚举类问题,我们一个主要思路是枚举的对象越少,复杂度也就越低,因此我们可以从枚举对象入手。我们可以选择“定一移二”的策略,也就是说,将j固定,移动i和k:具体来说就是在整个区间上确定一个j,在区间。基于上文的“定一移二”,我们可以想到另外一种空间开销较小的方法,也就是定住k,移动i、j让。都尽可能大,那么最终结果也会最大,但是又不能重复取,
2025-04-02 11:50:00
701
原创 C++实现一个异步线程池
知识点在代码的注释中阐述得非常详尽,在本文中不赘述,如有问题还请各位批评指正。是基于B站UP主@爱编程的大丙的C++11实现线程池项目。
2025-04-02 00:16:58
269
原创 Leetcode刷题Day3
对于记忆化搜索,具体来说,就是用一个数组来存“从第i个题开始做,得到的最大分数”,而其中必然会造成对中间结果的重复计算,因此需要用一个数组将中间结果保存起来,同时由于是自顶向下的递归法,所以我们需要定义一个递归函数。,那么我们不难发现,每做完一次决策,问题规模都会减小,直到减小为只有最后一个(所谓“规模减小”,是前面做完决策之后就不用再考虑前面的情况,只用考虑后面的情况,即“考虑的内容规模”减小了),也就是说本题存在。,意为从第i道题开始和从第i+1道题开始的分数是一样的(因为跳过了);
2025-04-01 21:19:57
907
原创 cpp工程项目构建指南(快速上手实用向)
本站已经有很多大佬全面详细地介绍过关于Makefile、cmake的内容,在此就不重复他们的工作,本文主要是为大家提供一个快速上手的方案(基本上可以应对常见的项目构建,尤其是自己做的项目)
2025-03-25 20:52:39
928
2
原创 Leetcode刷题Day2
leetcode刷题系列由于种种原因导致超长断更,所幸到今天一切尘埃基本落定,因此以今日为界限,本人将持续将这个系列推进下去,一方面记录算法做题的情况,另一方面希望能够与各位大佬一起交流学习。
2025-03-24 20:21:30
741
原创 LeetCode刷题Day1
的后n个位置都是空的,如果从后向前遍历,将两数组中最大的先填在后面则可以避免数据覆盖。的开销完成,思路是:以辅助数组的方式完成是出于避免数据覆盖的考虑,而。**注意:**最终,合并后数组不应由函数返回,而是存储在数组。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。你能否调整你的解法来应对这种情况?**进阶:**你可以设计实现一个时间复杂度为。是指向下一个节点的指针/引用。个元素表示应合并的元素,后。中,使合并后的数组同样按。的算法解决此问题吗?
2025-01-06 20:23:48
835
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人