上一页 1 ··· 19 20 21 22 23
摘要: 暴力破解 1 public String longestCommonPrefix(String[] strs) { 2 if(strs == null || strs.length == 0) { 3 return ""; 4 } 5 int min = minLen(strs); 6 int cn 阅读全文
posted @ 2016-01-28 07:38 warmland 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 用two pointers夹逼的方法,刚开始把left和right设置在数组的两端,如果left处比right处矮,那么说明left处是瓶颈,否则就是right处是。 同时维护一个全局的maxArea 1 public int maxArea(int[] height) { 2 if(height 阅读全文
posted @ 2016-01-28 07:14 warmland 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 更新: 之前那种dp太笨重了有个非常的轻巧的做法,原理都是一样的。 转移方程不变,但是不需要特别的初始化 判断某个格子是不是true,是 1.要么长度小于3,要么dp[start+1][end-1]==true 2.并且s.charAt(start) == s.charAt(end) 判断要不要更新 阅读全文
posted @ 2016-01-28 05:47 warmland 阅读(139) 评论(0) 推荐(0) 编辑
摘要: Two pointers 配合 HashSet 相当于控制一个小窗,如果下一个字母是新的字母,那小窗就往右移一格,同时检查一下是不是最大长度,如果下一个字母是有重复的,那么就让小窗的左侧往右移动到第一个不是该字母的地方。 需要注意的是,小窗左侧移动的时候,小窗右侧也要往右边移动一次,不然下一轮检查的 阅读全文
posted @ 2016-01-28 02:49 warmland 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 没什么特别的。不在原链表上操作,把每一位保存到一个新的链表里面。 程序大概分四段: 1. 当l1和l2都不为空的时候 2. 当l1不为空的时候 3. 当l2不为空的时候 4. 当carry!=0的时候,再建一个新的节点放在末尾 public ListNode addTwoNumbers(ListNo 阅读全文
posted @ 2016-01-28 01:04 warmland 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 考虑溢出。 思路就是用reverse integer的数学方法,把一个数倒过来,比较是否和原数字相同。 特殊情况: 1. 负数直接不对称 2. 溢出直接不对称 bug记录: 记得把原数字保存一下,不然后面其实x的值已经变了 public boolean isPalindrome(int x) { i 阅读全文
posted @ 2016-01-27 05:47 warmland 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 就是需要考虑溢出。方法一:用StringBuilder来reverse,然后直接用Integer.valueOf()来转成int,这个时候如果溢出就会throw exception,所以抓一下就好。学会使用try&catchpublic int reverse(int x) { boo... 阅读全文
posted @ 2016-01-27 04:00 warmland 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 如果不用hashmap解决2sum,而是把2sum看成nSum中的一部分,那么就需要用two pointers来解决问题。 2sum伪代码: 1. 先对给定的数组进行排序 2. walker指第一个元素,runner指最后一个元素 3.当walker小于runner: 1)如果walker和runn 阅读全文
posted @ 2016-01-06 19:34 warmland 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 需要注意的问题:1. 这个数组有没有重复的数字2. 这个数组有没有排序过建一个hashmap, 但是不能直接把数字放进去,再一个个查,因为会有以下的问题:1. 如果给定的数组是[3,2,5,6],target = 6. 这个时候输出出的结果会是[1,1].2. 如果给定的数组是[2,2,5,6], ... 阅读全文
posted @ 2016-01-03 15:42 warmland 阅读(94) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23