上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 33 下一页
摘要: 最后更新 一刷。 这个题不像是一刷,Hedvig的面经题。 K largest之类的题一般都可以用priority queue。 这里PQ里存的是,每个LIST的首NODE。 可以考虑divide and conquer,中文好像叫分治递归?这里的K个sorted lists已经给我们分治好了,我们 阅读全文
posted @ 2016-12-23 10:15 哇呀呀..生气啦~ 阅读(145) 评论(0) 推荐(0)
摘要: 最后更新 二刷。 这个题挺难的啊。。 首先找到需要翻转的位置。 有prev和temp两个node, 思路是把范围内的node放到prev和temp之间。。 这里的temp其实是翻转区间的尾端,用tail表示。 所以prev和tail这2个NODE是指着不动的。 首先找到下一个塞入他们之间的node: 阅读全文
posted @ 2016-12-22 05:43 哇呀呀..生气啦~ 阅读(173) 评论(0) 推荐(0)
摘要: 最后更新 三刷。 某一个状态下不能赢,说明上一个状态赢了,上上个状态输了,上上上个状态赢了。。但是越往上状态越是不一定的。。 所谓的状态其实就是input的情况。 这个题更像是DFS+状态记录,只不过提前结束的情况比较早。 java public class Solution { Map map = 阅读全文
posted @ 2016-12-22 03:41 哇呀呀..生气啦~ 阅读(263) 评论(0) 推荐(0)
摘要: 最后更新 这是几刷。 唯一值得说道的是,添加的时候可以用. s.substring(0, i) + " " + s.substring(i+1); 也可以弄成char[] array来修改。 第二种快。 java public class Solution { public List generat 阅读全文
posted @ 2016-12-22 02:46 哇呀呀..生气啦~ 阅读(125) 评论(0) 推荐(0)
摘要: 刷 Aug 01 2019 居然都4刷了,除了记得我做过之外完全没印象。 居然做出来了。。 对于n来说,我可以选1~n里任意一个,比如我选了3,对方一定会说答案在 [1~2]或者[4~n]中较大的那边,所以还是个MinMax题,总算稍微了有了点MinMax的感觉。 但是1~n选哪个要遍历才行。。 d 阅读全文
posted @ 2016-12-22 02:30 哇呀呀..生气啦~ 阅读(254) 评论(0) 推荐(0)
摘要: 刷 July 31 2019 这种题遇到就两腿一蹬,地上一躺。 和coins in a line I除了名字很像,没啥屌关系,如果真的作为I的follow up,就太坑了,因为根本不是FOLLOW UP,用1的思路去考虑就崩了。 dp[n]代表剩下n个硬币的时候的最大收益。 n的时候,有2种情况,可 阅读全文
posted @ 2016-12-22 01:48 哇呀呀..生气啦~ 阅读(245) 评论(0) 推荐(0)
摘要: 最后更新 一刷。 用数学方法是看是不是3的倍数。 不用数学方法的话要动态规划。 当前玩家,dp[i]行不行取决于dp[i 1]和dp[i 2],代表下一个玩家能不能赢,另一个玩家能赢的话当前就不能赢;另一个玩家不能赢,当前就能赢。 因为当前玩家可以通过拿1个或者拿2个来左右结果。 dp[i] = ! 阅读全文
posted @ 2016-12-21 05:46 哇呀呀..生气啦~ 阅读(225) 评论(0) 推荐(0)
摘要: 刷 July 29 2019 以i j为当前位置,它为右下角组成的最大的正方形是,如果上左斜上3个位置都是1,那么它的最大长度取决于刚才3个点里面最小的+它自己的1. 就是这个DP规则,不是很难。 理论上说这种二维的DP,只需要2行或者2列作为DP保存上一轮的值就行,就是滚动。 OLD 用DP. T 阅读全文
posted @ 2016-12-21 04:22 哇呀呀..生气啦~ 阅读(218) 评论(0) 推荐(0)
摘要: 最后更新 二刷? 和小机器人走路径差不多= = 这个可以在原有的盘子上更新= = 如果不是只读。 Time : O(N) + O(M) + O(M N) Space: in place java public class Solution { public int minPathSum(int[][ 阅读全文
posted @ 2016-12-21 03:55 哇呀呀..生气啦~ 阅读(121) 评论(0) 推荐(0)
摘要: 最后更新 四刷? 依然是尝试用一维DP。 每次更新DP的时候相当于直接添加了2个方向的贡献值。 开始的dp[1] = 1不好理解,其实是代表每行第一个格子dp[j]来自左边的贡献值,来自上面的贡献值是他本身,我们在上一行算过,所以是dp[j] + 1。 下个格子dp[j+1]就变成了来自左边的贡献值 阅读全文
posted @ 2016-12-21 02:57 哇呀呀..生气啦~ 阅读(118) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 33 下一页