摘要: 题目要求是,给你一个单向链表,和一个数字n,删除该链表倒数第n个node,其中测试案例中n能保证一定有效。 思路很简单,用两个指针,它们两个相隔为n,当后面的指针指向链表尾的时候,前面的指针指向的node的下一个node,就是要删除的那一个。 代码如下:   阅读全文
posted @ 2016-03-13 12:49 可普CS之家 阅读(210) 评论(0) 推荐(0)
摘要: 思路和3Sum一样,只是把O(n^4)变成了O(n^3),思路详细见3sum。最终能够ac。 代码如下:   阅读全文
posted @ 2016-03-13 12:39 可普CS之家 阅读(197) 评论(0) 推荐(0)
摘要: 经典的backtracking(回溯算法)的题目。当一个题目,存在各种满足条件的组合,并且需要把它们全部列出来时,就可以考虑backtracking了。当然,backtracking在一定程度上属于穷举,所以当数据特别大的时候,不合适。而对于那些题目,可能就需要通过动态规划来完成。 这道题的思路很简 阅读全文
posted @ 2016-03-13 12:23 可普CS之家 阅读(4047) 评论(0) 推荐(0)
摘要: 这一题和leetCode(15)的3sum基本上一个思路 —— two pointer。而且题目保证只有有一个答案,所以还不需要考虑重复的问题,只需要维护一个与target差值最小的closeDistance,以及对应的数组上的值就好。 代码如下:   阅读全文
posted @ 2016-03-13 11:48 可普CS之家 阅读(209) 评论(0) 推荐(0)
摘要: 这道题给你一个数组,找到所有三个数加起来等于0的数字并存到List里。暴力搜索的话大概要耗费O(n^3)的时间,但是如果这个数组是有序的话,搜索起来就会相对简单,排序大概要花费O(nlog(n))的时间,有序搜索只需要花费O(n^2)的时间,所以,思路是这样: 先排序。 外循环i纪录第一个数字,内循 阅读全文
posted @ 2016-03-05 07:42 可普CS之家 阅读(737) 评论(0) 推荐(0)
摘要: 这道题要求给你一组字符串数组strs[],找到整个数组的所有字符串里最长的前缀,如(["abc","abde,"abcad"],最长的前缀是"ab"])。 这题比较简单,思路是这样子:一开始,把strs[0]当成是最长的前缀prefix,然后从strs[1]开始遍历,找到strs[0]和strs[1 阅读全文
posted @ 2016-03-05 07:26 可普CS之家 阅读(186) 评论(0) 推荐(0)
摘要: 这题和12题是刚好反过来,给你的是一个罗马数字,然后输出一个int。对于这题我并没有用到数组,只根据罗马数字的规则从右往左处理就好,碰到数字比右边最大的要小就减(如IV,右往左读,读到I发现比V要小,故-1),不然就加。代码如下: 1 public class Solution { 2 public 阅读全文
posted @ 2016-03-05 07:02 可普CS之家 阅读(226) 评论(0) 推荐(0)
摘要: 本题的要求是把阿拉伯数字转化成罗马数字,这题唯一的难点,可能就是要了解罗马数字的规则,了解了以后,就没什么难的了。因为罗马数字的规则相对比较复杂,如果想要查看罗马数字的规则,网上有很多资料可以查询。剩下的就是简单的逻辑问题了。做这道题有两个方法,一个是建一个罗马数字初始数组,通过不断调用该数组来构成 阅读全文
posted @ 2016-03-04 12:21 可普CS之家 阅读(961) 评论(0) 推荐(0)
摘要: 这一题讲的给你一个数组height,数组上的数字代表X轴在index点上的高度,现在要求的是,取拿两个点,使两点之间能盛的水最多。我们知道,能够盛的水的高度的取决于较矮的一个的高度。假设水的容积为s,则两点之间水的容积为s = (index2 - index1) * Math.min(height[ 阅读全文
posted @ 2016-03-04 11:31 可普CS之家 阅读(181) 评论(0) 推荐(0)
摘要: 非常challenge的一道题,考虑的情况特别多,当考虑到了之后,还要考虑怎么处理。题目要求是,给你两个字符串,判断正则字符串能不能表示待检字符串,一个是"aabb",另外一个是正则表达式"a*.*"。该正则表达式只有两种特殊符号,一种是'.',代表的是任意字符,另一种是'*',它单独出现没有任何意 阅读全文
posted @ 2016-02-29 05:14 可普CS之家 阅读(457) 评论(0) 推荐(0)