随笔分类 - LeetCode
摘要:思路 此题做法与LC 1755. 最接近目标值的子序列和类似 详情见这篇Blog 还是把数组分为两部分,分别用状态压缩进行枚举,然后对第二部分所凑成的值在第一部分中二分查找即可 AC_CODE #define fi first #define se second #define pb push_ba
阅读全文
摘要:题目描述 给你一个整数数组 nums 和一个目标值 goal 。 你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal) 。 返回 abs(sum - goal) 可能的 最小值 。 注意
阅读全文
摘要:241. 为运算表达式设计优先级 题目大意 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 + - * 思路: 分治 我们对于每一个运算符可以考虑它左边可以运算出的值 和 右边可以运算出的值,他们两个再进行运算
阅读全文
摘要:LeetCode每日一题2021.9.20 LeetCode673. 最长递增子序列的个数 思路 在最长上升子序列的转移时,维护一个 cnt 数组,表示 以 i 结尾的最长上升子序列个数 f[i] 表示以 i 结尾的最长上升子序列的长度 转移方程为 cnt[i] = (f[i] == f[j] +
阅读全文
摘要:LeetCode每日一题2021.9.19 跳转链接 分析 我们发现每个数字只能由它的因数通过复制而来, 因为复制操作是每次去添加一个相同的个数. 因此我们就可以得出DP方程 dp[i] = min({dp[i], dp[i/j] + j, dp[j] + i/j}) 因为我们直接两重循环进行状态转
阅读全文