五月18

本周计划:每天一篇面经 + MySQL + Redis 2h
算法 : hot100 5/day 算法专项 labuladong 1.5h
项目: 小哈书按模块推进 + 技术派 2h

算法:买卖股票系列问题
使用动态规划:从最后一天开始推导
给出场景如下:限制股票交易次数为K(一次买入+卖出为一次交易) 现在有如下状态转移方程:

1
2
3
4
dp[i][k][0] = Math.max(dp[i][k][0], dp[i][k][1]+prices[i]);
dp[i][k][1] = Math.max(dp[i][k][1], dp[i][k-1][0]-prices[i]);
dp[0][][0] = dp[][0][0] = 0;
dp[0][][1] = dp[][0][1] = -INF;

打家劫舍系列问题:

  1. 最长有效括号

、用栈维护当前待匹配的左括号的位置,同时用 start 记录一个新的可能合法的子串的起始位置,初始设为0。

2、如果s[i] ==’(‘,那么把i进栈。

3、如果s[i] == ‘)’,那么弹出栈顶元素 (代表栈顶的左括号匹配到了右括号),出栈后:

如果栈为空,说明以当前右括号为右端点的合法括号序列的左端点为start,则更新答案 i - start + 1。

如果栈不为空,说明以当前右括号为右端点的合法括号序列的左端点为栈顶元素的下一个元素,则更新答案i - st.top() 。

4、遇到右括号)且当前栈为空,则当前的 start 开始的子串不再可能为合法子串了,下一个合法子串的起始位置可能是 i + 1,更新 start = i + 1。

5、最后返回答案即可。

项目:


五月18
http://bloomivy.github.io/2025/05/18/五月18/
作者
Bloom
发布于
2025年5月18日
许可协议