![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
SuperHaker~
这个作者很懒,什么都没留下…
展开
-
8/23背包
0-1背包:一维的话,dp[j]代表j的容量所能装的最大价值;上面两题,都是从数组中挑选数来求和,区别在于第一个需要求所有的方法,第二个只需要有就可以,外层循环是挑选物品。内层遍历所有容量的可能性;倒序是因为从前到后的话,对于某个物品会重复计算,从后到前不会(计算就是依赖前面的,所以肯定是从往前才不会有影响),每次计算都会考虑带不带之前的物品。确定dp数组以及下标的含义01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值最大可以为dp[j]。本题中每一个元素的数值既是重量,也是价值。原创 2023-08-23 16:19:43 · 34 阅读 · 0 评论 -
8/22 动态规划:最长子序列,最大子数组和
【代码】8/22 动态规划:最长子序列,最大子数组和。原创 2023-08-22 17:35:33 · 37 阅读 · 0 评论 -
8/15 动态规划
数学解法(穷举)vs 动态规划。set vs z查找。原创 2023-08-15 14:32:35 · 24 阅读 · 0 评论 -
8/14 动态规划
二维数组初始化,理清楚转移函数,准备初始值和存储table,注意边界,就可以写出答案了。l两种写法,迭代和递归。递归写法vs迭代写法。原创 2023-08-14 16:03:22 · 35 阅读 · 0 评论 -
8/11 符号串处理
遇到左括号,需要的右括号加2,如果右括号是奇数,右括号加一,need–;遇到括号,先判断need是否有剩余,有的话就–,没有的话,左括号需要加一个,need = 1。原创 2023-08-11 17:25:05 · 38 阅读 · 0 评论 -
8/9 二分查找
优化思路:还是全部用左右闭合写法吧,不容易错,然后两个函数可以合并成一个,或者这道题直接找到一个,往左右在搜索边界即可。思路有两种:找到左右上下界,判断长度;或者随便找到一个值,往两边扩展。踩坑:做除法运算要用Number.flow或者parseInt。主要逻辑不复杂·,主要是边界问题。原创 2023-08-09 18:23:31 · 33 阅读 · 0 评论 -
7/31双指针之滑动窗口
滑动窗口思路: 维护一个窗口的左右边界,新元素不断进入窗口,更新窗口信息,当窗口内元素满足条件,就代表找到了一个可行解,剩下的就是在可行解基础上找到一个最优解,每次收缩窗口的左边界,更新窗口信息。直到窗口右边界到达临界,所有的结果就出来了。:使用了js的map,因为没用过,不过感觉直接用对象写很多判断条件会简便很多,踩坑的话,一个是value,应该直接用need.size ,然后收缩窗口的条件是left<right,另外start和length的更新一定要判断是否是更优解。原创 2023-07-31 23:27:16 · 43 阅读 · 0 评论 -
7/30 链表和数组的双指针----快慢指针和左右指针
链表和数组的技巧----双指针原创 2023-07-30 22:12:39 · 50 阅读 · 0 评论