摘要: 这个题有俩EDGE CASE不容易想到。 一个是没有路径是返还“/"不是"" 另一个是有可能出现a//b这种情况,split会分出一个空字符串 然后就是EASY难度的了。。 Java public class Solution { public String simplifyPath(String 阅读全文
posted @ 2016-09-16 11:25 哇呀呀..生气啦~ 阅读(106) 评论(0) 推荐(0)
摘要: 比较典型的动态规划。一刷的时候看code_ganker做法,对他局部 全局的想法很震惊,五体投地。 让乘积最大有2种来源: 2个正数相乘,越来越大。 2个负数相乘,也可以变大。 所以最终结果可能是正数乘以正数,也可能是一个非常小的负数乘以另一个负数,然后一下子牛逼了。。 所以既需要保留最大的正数,也 阅读全文
posted @ 2016-09-16 11:02 哇呀呀..生气啦~ 阅读(117) 评论(0) 推荐(0)
摘要: 很无聊的一个数学题。 需要知道2个公式 计算幂函数的。。 主要问题就是指数太大,a^b中的b太大。。 要分解。 23^1335 = { (23^1330)%mod (23^5)%mod} % mod 然后一开始的 (23^1330)%mod = ((23 ^133)%mod)^10 原式就是 ((2 阅读全文
posted @ 2016-09-16 08:38 哇呀呀..生气啦~ 阅读(140) 评论(0) 推荐(0)
摘要: 需要知道以下几点: XOR 返还不一样,不一样的相加那么结果是1。 AND 返还进位,进位之后肯定是0. 相当于原题变为A+B之后,算2部分,第一部分是相加之后没进位的那些bits,都是1,第二部分是进位的那些bits. 两部分相加就行了。 用迭代,停止的情况是第二部分是0。。 public int 阅读全文
posted @ 2016-09-16 08:38 哇呀呀..生气啦~ 阅读(101) 评论(0) 推荐(0)
摘要: 这个题的思路是动态规划,DP[n]代表能组成n的组合数。算1 n就可以,因为都是正数。 算dp[n]的时候遍历num[1] to num[n] index = i 如果i = nums[m]) dp[n] = dp[n] + dp[n nums[m]]; } } return dp[target]; 阅读全文
posted @ 2016-09-16 08:34 哇呀呀..生气啦~ 阅读(677) 评论(0) 推荐(1)
摘要: 这个傻屌题,二刷思路一下子就找到了,问题是edge case多的一逼,其实难就难在如何处理相等的2个元素。比如记录相等前的正负判断,这个还好说。 一上来就相等怎么办,必须解决这种情况,反正和麻烦。。 Java public class Solution { public int wiggleMaxL 阅读全文
posted @ 2016-09-16 08:32 哇呀呀..生气啦~ 阅读(131) 评论(0) 推荐(0)
摘要: 遍历原数组,当前I,然后随机nextInt(length i),两个SWAP,就表示随便选了一个放到I了,然后再看I+1,I+2。。到最后就行了。 int[] origin; int[] res; Random rdm = new Random(); public Solution(int[] nu 阅读全文
posted @ 2016-09-16 08:28 哇呀呀..生气啦~ 阅读(138) 评论(0) 推荐(0)
摘要: 用DFS来做,先弄开头是1的,再弄开头是1的里面开头是1的,再开头是1的里面开头是1的里的开头是1的,再。。。 是吧…… 比N大了BREAK就行。 注意第一个循环是1 9,往后的循环是0 9。 阅读全文
posted @ 2016-09-16 08:27 哇呀呀..生气啦~ 阅读(103) 评论(0) 推荐(0)
摘要: 用int array记录可用字母数量 0的时候说明GG了 public boolean canConstruct(String ransomNote, String magazine) { if(ransomNote.length() magazine.length()) return false; 阅读全文
posted @ 2016-09-16 08:27 哇呀呀..生气啦~ 阅读(83) 评论(0) 推荐(0)
摘要: 括号题一般都是stack.. 一开始想的是存入STACK的是SRING,然后POP出括号在构建新的NestedInteger放到另一个里面,但是操作起来费时费力。 后来猛然发现其实可以直接吧NestedInteger作为Object放入Stack里。 这种直接往堆顶元素里放的办法一定要注意。 然后就 阅读全文
posted @ 2016-09-16 08:26 哇呀呀..生气啦~ 阅读(458) 评论(0) 推荐(0)
摘要: 一开始觉得是不是有什么巧办法,就先BRUTE FORCE。 发现似乎没什么巧办法。 思路是用2个pointers一个标记短string位置,另一个是长string。 找到就p1++,p2++ 找不到就p2++ 然后用indexOf,似乎快很多。 (https://discuss.leetcode.c 阅读全文
posted @ 2016-09-16 08:22 哇呀呀..生气啦~ 阅读(244) 评论(0) 推荐(0)
摘要: 看起来很难的样子,隐约觉得要动态规划。 先用笨办法,基本就是枚举。。果然TLE。 Java public class Solution { int res = 0; public int longestSubstring(String s, int k) { int[] map = new int[ 阅读全文
posted @ 2016-09-16 08:19 哇呀呀..生气啦~ 阅读(880) 评论(1) 推荐(0)
摘要: 搜词,一个字母只能用一遍。 比较简单,无非是看4个方向…… public boolean exist(char[][] board, String word) { if (board == null) return false; int row = board.length; int col = b 阅读全文
posted @ 2016-09-16 06:51 哇呀呀..生气啦~ 阅读(212) 评论(0) 推荐(0)
摘要: 二刷尝试了别的办法,用MAP代表关注列表。 然后不初始化,但是只要有用户被使用,而他又不在MAP里,就把他加进去,然后让他关注自己。。 但是这样做超时了。 问题在于这个题解法太多,有很多不同的情况。 STACK记录所有推,然后找10个,那太难了,可能某个用户关注的只是几亿里面的某些人,搜索起来很要命 阅读全文
posted @ 2016-09-16 06:45 哇呀呀..生气啦~ 阅读(166) 评论(0) 推荐(0)
摘要: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 一刷我记得用的是12 36 98 74 这种方式,然后往里一层。 遇到长宽是1(比如刚才第二层就剩1个5了)和2([1,2],[3,4])的就只遍历,不往里。但是很麻烦,二刷换了个方法。。 Java public c 阅读全文
posted @ 2016-09-16 05:29 哇呀呀..生气啦~ 阅读(128) 评论(0) 推荐(0)