获得徽章 0
- #刷题交流# 思路:
滑动窗口:我们可以使用两个指针来表示窗口的左右边界。窗口内的字符是我们当前正在检查的子串。
计数器:我们需要一个计数器来记录窗口内每种字符的出现次数。
修改次数:我们需要一个变量来记录当前窗口内已经进行的修改次数。
最大长度:我们需要一个变量来记录满足条件的最大子串长度。评论1 - #刷题交流# 过程
基本情况处理:
当宽度为2时,直接返回预定义的阵列 [[1, 1], [0, 1]]。
当宽度为3时,直接返回预定义的阵列 [[1, 1, 1], [0, 0, 1], [1, 1, 1]]。
递归生成子阵列:
对于宽度大于3的情况,首先递归调用 solution(width - 2) 生成宽度为 width - 2 的子阵列 base。
构建当前宽度的阵列:
初始化结果数组 res,其中第一行为全1,第二行为全0,但最后一个元素为1。
从 base 的最后一行开始,逐行反转并添加到 res 中,每行末尾添加 [0, 1]。
最后,修正 res 的最后一行的倒数第二个元素为1。展开评论1 - #刷题交流# 思路:
计算每个英雄达到目标值所需的升级次数:
对于每个英雄,从初始值1开始,模拟升级操作,直到达到或超过目标值 b_i。
记录每个英雄达到目标值所需的升级次数。
动态规划(DP)求解最大奖励:
使用动态规划来解决背包问题。
定义 dp[i][j] 表示前 i 个英雄在最多 j 次升级操作后能获得的最大奖励。
状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i-1][j-cost[i]] + reward[i]),其中 cost[i] 是第 i 个英雄达到目标值所需的升级次数,reward[i] 是第 i 个英雄的奖励。
初始化和边界条件:
dp[0][j] = 0 表示没有英雄时,无论有多少次升级操作,奖励总和为0。
dp[i][0] = 0 表示没有升级操作时,奖励总和为0。展开评论1 - #刷题交流# 思路:
遍历所有可能的组合:
对于每个目标,有两种选择(f_{i,1} 或 f_{i,2}),因此总共有 2^N 种组合。
可以使用递归或位运算来遍历所有组合。
计算乘积并统计:
对于每一种组合,计算乘积。
检查乘积是否在 [L, R] 范围内,如果在范围内,则方案数加一。展开评论4 - #刷题交流#
遍历顺序:按照输入的顺序遍历零件,确保优先级正确。
时间更新:在每个工序完成后,更新相应工人的当前时间。
总时间计算:所有零件的工序完成后,计算总时间,即三个工人中最后一个完成工序的时间。评论2 - #刷题交流# 解题思路:可以使用动态规划来解决这个问题。
定义两个状态:
hold[i]:表示第 i 天持有股票时的最大利润。
cash[i]:表示第 i 天不持有股票时的最大利润。
持有股票:
如果第 i 天持有股票,那么可能是第 i-1 天就持有股票,或者第 i-2 天卖出股票后第 i 天买入股票。
hold[i] = max(hold[i-1], cash[i-2] - prices[i])
不持有股票:
如果第 i 天不持有股票,那么可能是第 i-1 天就不持有股票,或者第 i-1 天卖出股票。
cash[i] = max(cash[i-1], hold[i-1] + prices[i])展开11 - #刷题交流# 思路:如果一组元素是连续递增的,并且至少包含3个元素,那么这些元素可以被表示为一个范围(例如 1-3)。如果一组元素不满足这个条件,那么每个元素需要单独列出。评论1