上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页
摘要: 字符串题,很自然想到dp去做。由于print时可以自由选择开始位置并覆盖原有的部分,比如先打印5个a,"aaaaa",然后在index 2的位置打印2个b,得到 "aabba"。 因此对于一个字符串s,我们可以通过其最后一个字符,找到这个字符可能是和前面某个位置的相同字符一起打印出来的。 比如 "a 阅读全文
posted @ 2019-08-05 07:21 約束の空 阅读(274) 评论(0) 推荐(0)
摘要: Basic Calculator 由于只需要实现加减和括号,除了括号不需要考虑运算的优先级,所以可以直接one pass做。 思路是将 a-b 等价为 a+(-b),这样所有的运算都是加法,而负号只要乘以后面的数即可。 建立一个stack,遇到左括号时,压栈迄今为止的和以及括号前的符号。遇到对应右括 阅读全文
posted @ 2019-07-31 16:05 約束の空 阅读(229) 评论(0) 推荐(0)
摘要: 看起来是 LeetCode 221. Maximal Square 的拓展,但是完全不能用那一题dp的思想。 最主要的问题是,矩形没法和正方形一样保证 较小的边+1后形成的矩形一定是包含在其他图形中。 二维的问题我们想办法转换为一维的问题去做。类似 LeetCode 363. Max Sum of 阅读全文
posted @ 2019-07-31 14:36 約束の空 阅读(170) 评论(0) 推荐(0)
摘要: 方法一:DP (TLE?) brute force需要先枚举左上顶点 O(mn),右下顶点 O(mn),然后扫描面积 O(mn),总时间复杂度 O((mn)^3)。 我们可以用DP优化。利用二维prefix sum,计算出所有(0,0)到(i,j)的面积。这样对于任意一个矩形,我们可以通过大矩形减去 阅读全文
posted @ 2019-07-30 13:30 約束の空 阅读(278) 评论(0) 推荐(0)
摘要: minmax的问题,通常解法是用dfs。对于本题,可以记录 [mouse,cat,turn] 来递归,根据是谁的turn决定策略。但是本题由于平局存在,而平局很难判断 (别的选择都不利,且有一种走法在recursion stack里存在,才能说明选平局),所以dfs自顶向下搜索写起来比较困难 (df 阅读全文
posted @ 2019-07-29 13:01 約束の空 阅读(248) 评论(0) 推荐(0)
摘要: Backtracing + Pruning (TLE) 最容易的解法是 backtracing,但是即使加了剪枝,还是会超时。 Backtracing + Memoization 加一个memo减少递归次数。由于上面的写法的递归函数返回void,要修改为有返回值的写法才能运用memo。 让 dfs 阅读全文
posted @ 2019-07-29 06:25 約束の空 阅读(1830) 评论(0) 推荐(0)
摘要: Best Time to Buy and Sell Stock II Best Time to Buy and Sell Stock III 比较难想到,分别记录四个状态: 1buy,1buy1sell,2buy1sell,2buy2sell。 构建四个dp数组,例如,1buy1sell[i] = 阅读全文
posted @ 2019-07-28 12:39 約束の空 阅读(130) 评论(0) 推荐(0)
摘要: 需要利用 sparse 的特性来做这道题。扫描A的每一个元素 A[i][j],考虑A[i][j]会被B中哪些元素乘到。 对于A的第i行 A[i][*],会乘以B的每一列 B[*][k] ∀k,得到 res[i][k]。因此,最后 res[i][k] += A[i][j] * B[j][k]。 这样的 阅读全文
posted @ 2019-07-28 05:55 約束の空 阅读(224) 评论(0) 推荐(0)
摘要: 经典line sweep问题,和 perfect rectangle 很类似,但是要考虑多个矩形左边界一样的情况,加个id来区分。 和另一道类似的题 the skyline problem 不同的是,没有很多 corner cases,对 x 排序非常简单。 难点是在 active set 里,和 阅读全文
posted @ 2019-07-26 14:19 約束の空 阅读(240) 评论(0) 推荐(0)
摘要: 方法一:Line Sweep 几何类问题,可以用 Line Sweep nlogn 解决。维护一个active set,左边界进右边界出。排序时注意 corner cases: 1. 右边界和左边界x一样时,先处理左边界。 2. 多个左边界x一样时,高的先处理。 3. 多个右边界x一样时,矮的先处理 阅读全文
posted @ 2019-07-24 15:43 約束の空 阅读(131) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 22 下一页