- 博客(4)
- 收藏
- 关注
原创 LeetCode322.零钱兑换(记忆化搜索,动态规划)
LeetCode322.零钱兑换解法记忆化搜索动态规划记忆化搜索/*返回可以凑成总金额的最少的硬币个数*/func coinChange(coins []int, amount int) int { var f = make([]int, amount) /* 记忆化搜索,自顶向下, f[i]表示兑换i+1元需要的最少硬币数 */ var searchChange func(coins []int, amount int) int searchChange = func(coin
2021-10-11 11:17:52 317
原创 LeetCode312. 戳气球 (分治,记忆化搜索,动态规划)
LeetCode312. 戳气球 解题思路记忆化搜索动态规划解题思路官方题解参考题解核心思想:由于戳气球的操作会导致两个气球从不相邻变成相邻,使得后续操作难以处理。于是我们倒过来看这些操作,将全过程看成每次添加一个气球。solve(i, j)表示 开区间(i, j) 所能获得的最大硬币数。当开区间只包含一个气球mid时,solve(i, j) = val[i] * val[mid] * val[j]记忆化搜索自顶向下分治+递归+记忆/*解法一: 记忆化搜索 由于戳气球的操作
2021-10-10 16:34:51 295
原创 LeetCode309. 最佳买卖股票时机含冷冻期(动态规划)
LeetCode309. 最佳买卖股票时机含冷冻期 /*计算最大利润,不能同时参与多笔交易,卖出后无法在第二天买入(冷冻期为1天)动态规划 每一天会有三种不同的状态: 1. 目前持有一支股票,对应的[累计最大收益]为dp[i][0] 2. 目前不持有任何股票,且处于冷冻期中,对应的[累计最大收益]为dp[i][1] 3. 目前不持有任何股票,且不处于冷冻期中,对应的[累计最大收益]为dp[i][2] 注意:这里处于冷冻期是指第二天即i+1不处于冷冻期 状态转移: 1. 目
2021-10-10 13:36:22 207
原创 LeetCode301 删除无效的括号(深度遍历+剪枝)
LeetCode301. 删除无效的括号/*一次遍历获取需要删除的左括号的个数和右括号的个数,遇到右括号: 如果左括号个数不为0,则左括号个数--; 如果左括号个数为0,则右括号个数++;遇到左括号: 左括号个数++这样子一次遍历后,左括号个数和右括号个数即为各自需要删除的个数。然后通过深度遍历+剪枝尝试删除,使用hash表去重。需要严格保证 [已经遍历到的左括号的数量] 大于 [已经遍历到的右括号的数量] 的时候,才可以继续添加 [右括号],并且只有当该删除的括号都删除完全即左括号
2021-10-09 19:35:28 171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人