摘要: 刷 July 13 2019 这个比一般的M难一点,好多要解决的地方 1 中间可1可2 2 DFS的permutation也不容易 3 用StringBuilder容易弄错,reverse()会导致回溯的时候没有恢复,毕竟setLength()只是恢复长度 Time: 遍历O(n) 统计 O(n) 阅读全文
posted @ 2016-10-17 12:03 哇呀呀..生气啦~ 阅读(174) 评论(0) 推荐(0)
摘要: traverse的时候要知道每个NODE是在第几列。 我用的方法是DFS,传入的时候记录NODE是 左起 第几列,还要知道最左边是第几列。 一开始最左边是第0列,ROOT是坐起第0列。 进入方程之后,如果这一列不存在,列数 =size(),手动添加。其实相当于往右添加列 然后看左边是否有left c 阅读全文
posted @ 2016-10-17 09:20 哇呀呀..生气啦~ 阅读(137) 评论(0) 推荐(0)
摘要: 因为要多次查询,每次都遍历肯定不行,所以要保存信息。 最直接的就是保存每个string出现的位置,查询A,B的时候就直接比较他们所有的出现INDEX中最小的情况。 有一点需要注意的是,A出现的位置和B出现的位置都是按顺序添加的,从小到大。 假设M是A出现的一个位置,N是B出现的一个位置,我们首先更新 阅读全文
posted @ 2016-10-17 07:49 哇呀呀..生气啦~ 阅读(206) 评论(0) 推荐(0)
摘要: 以最左边为开始,往右遍历,不一样的个数大于K的时候停止,回到第一个不一样的地方,以它为开始,继续。。 用QUEUE记录每次不一样的INDEX,以便下一个遍历开始, 从左往右,从右往左各来一次。。加上各种剪枝情况,比如未遍历的数量当前最大值res 的情况下,我们才看是否满足 others most + 阅读全文
posted @ 2016-10-17 06:16 哇呀呀..生气啦~ 阅读(1206) 评论(1) 推荐(0)
摘要: 这个题做得突出一个蠢字。。 思路就是看unique letter,因为题里说肯定是valid string。。 一开始有几个Z就有几个ZERO 同样的还有x for six, g for eight, w for two.. 比如有x个six,那剩下的i的字母数量要 x,s =x... 算完0682 阅读全文
posted @ 2016-10-17 05:08 哇呀呀..生气啦~ 阅读(250) 评论(0) 推荐(0)
摘要: 似乎可以沿着对角线往右往下检查,也可以正常按题设检查。 我用的后者。。 二刷。 尝试了对角线,居然卡了…… 老老实实正常做了。 逐渐在适应 GOOGLE JAVA DOC STYLE的排版。 java public class Solution { public boolean validWordS 阅读全文
posted @ 2016-10-17 04:09 哇呀呀..生气啦~ 阅读(263) 评论(0) 推荐(0)