dong哥学习笔记
文章平均质量分 69
学习 labuladong 内容的专栏,240509,我终于遇见了个人目前认为写的最好的博客
wugong_true
不求无过,但求无功
展开
-
day13买卖股票系列
如果是只买卖一次,那么是 dp(i)[1] = Math.max(dp(i-1)[1], - prices[i]);2和1的区别是 dp(i)[1] = Math.max(dp(i-1)[1], dp(i-1)[0] - prices[i]);实际情况是k有可能出现内存超限的错误,因为传入的测试中k可能很大2,dp数组太大,那么设想一下,dp数组最多有多大呢?每次交易买入卖出最少需要两天,所以说有效的k应该不超过 n/2,如果超过了,k限制也没有意义了,相当于2题。每次买完之后要等一天才能继续交易。原创 2024-05-23 16:45:24 · 419 阅读 · 0 评论 -
day8二叉树&单调栈1
如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。原创 2024-05-21 19:41:45 · 801 阅读 · 0 评论 -
算法训练营day46
【代码】算法训练营day46。原创 2024-05-21 08:53:58 · 374 阅读 · 0 评论 -
day7_动态规划2
dp[i] [w] 的定义;对于前i个物品,当前背包的容量为W,这种情况下可以装的最大价值比如 dp[3] [5] = 6 表示若只对前三个物品进行选择,当背包容量为5时,最多可以装下的价值是6base case 是 dp[0] […] = dp[…] [0] = 0,没有物品或者背包没有空间的时候,能装的最大价值就是0。原创 2024-05-16 21:13:07 · 657 阅读 · 0 评论 -
day4_prefixSum2
参考链接。原创 2024-05-15 11:22:35 · 652 阅读 · 0 评论 -
day5_array
1.空间复杂度O(n)版本。2.空间复杂度常数版本。原创 2024-05-14 21:47:41 · 412 阅读 · 0 评论 -
day6_动态规划1
穷举所有可能性。算法设计无非就是先思考“如何穷举”,然后再追求“如何聪明地穷举”。列出状态转移方程,就是在解决“如何穷举”的问题。之所以说它难,一是因为很多穷举需要递归实现,二是因为有的问题本身的解空间复杂,不那么容易穷举完整。备忘录、DP table 就是在追求“如何聪明地穷举”。用空间换时间的思路,是降低时间复杂度的不二法门,除此之外,试问,还能玩出啥花活?原创 2024-05-13 21:32:39 · 2005 阅读 · 0 评论 -
day3_prefixSum
如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。原创 2024-05-11 21:54:04 · 1013 阅读 · 0 评论 -
day2_greedy&Intervals&LRU/LFU
因为同时维护map的双端链表,需要抽象出来几个方法在对元素操作时同时操作map和DoubleList,防止漏掉操作,比如说删除某个。使用哈希双端链表(Java中对应的是LinkedHashMap)说的有点玄幻,实际上很简单,就是尽量让 ==LRU 的主方法。使得我们可以在 O(1) 时间访问链表的任意元素。get逻辑比较简单,这里阐述一下put的逻辑。1288删除被覆盖区间,返回剩余区间的数量。LRU 算法的核心数据结构是使用哈希链表。使得链表元素维持插入顺序,同时借助。哈希映射的快速访问能力。原创 2024-05-10 20:01:38 · 845 阅读 · 0 评论 -
day1_slidingWindow
1、什么时候应该移动right扩大窗口?窗口加入字符时,应该更新哪些数据?2、什么时候窗口应该暂停扩大(满足了条件),开始移动left缩小窗口?从窗口移出字符时,应该更新哪些数据?3、我们要的结果应该在扩大窗口时还是缩小窗口时进行更新?如果一个字符进入窗口,应该增加window计数器;如果一个字符将移出窗口的时候,应该减少window计数器;当valid满足need时应该收缩窗口;应该在收缩窗口的时候更新最终结果。原创 2024-05-09 20:58:32 · 752 阅读 · 0 评论