- 博客(95)
- 收藏
- 关注
原创 长周末结束
如题,我们感觉是挺努力了,一共做了24道题,但是仔细一看,效率还是不够啊,应该至少还能做4道,甚至6道吧。而且到底彻彻底底的掌握了多少?这个必须要多回顾,过遍数!睡觉
2016-05-31 19:48:38 279
原创 Topological Sorting
图的拓扑排序,这也是给自己补上一课。参考点击打开链接用的是bfs来处理的。有三个循环,第一个是将所有有父节点的节点放进map中,并对每一个节点保存其父节点的个数;第二个将将没有父节点的节点放进results和queue中,这些节点就是根节点,即拓扑的开端,第三个依次将每个有父节点的节点中保存的父节点个数不断减1,清0,注意自己清0的错误这个过程能保证顺序的/**
2016-05-31 19:33:37 291
原创 Clone Graph
典型的bfs遍历问题,基本功很棒的代码点击打开链接/** * @param node: A undirected graph node * @return: A undirected graph node */ public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
2016-05-31 18:33:02 225
原创 Largest Rectangle in Histogram
这是一道智力题,我还会再次好好做这个的一个很好的参考:点击打开链接/** * @param height: A list of integer * @return: The area of largest rectangle in the histogram */ public int largestRectangleArea(in
2016-05-31 12:46:02 234
原创 LRU Cache
当年oracle面试时,ravi就反复问我们这道题,当时竟然不知这是一道可以准备的高频题,当然最重要的是当时只是限于用queue和map去做了,没有想到用双向循环列表。虽然最后过了,但心中一直抱憾。今天我们终于要面对这道题,觉得这道题如果想到了用双向循环列表和map就没有技术难度了,剩下的只是对lru的理解,和链表操作的基本功。于是在我们的code中,这两点都犯了错误,尤其是lru的理解,第4个错
2016-05-31 10:32:20 297
原创 MinStack
首先对于这种数据结构实现问题,我们都是先看了答案了。然后明白了思路后,就开始自己实现。于是当中犯了两个错误,尤其是第二个错误,甚是可怕。Stack存的是Object类型,在进行值的比较时,怎么可以是用“==”来比较,//2这个错误怎么这么蠢!public class MinStack { Stack stack; Stack minStack;
2016-05-31 02:01:11 249
原创 Implement Queue by Two Stacks
基础知识的考察,补课public class Queue { private Stack stack1; private Stack stack2; public Queue() { // do initialization if necessary stack1 = new Stack<>(); stack2 = new S
2016-05-31 01:18:54 257
原创 Rehashing
这道题考查的是coding的熟练程度,我感觉,对于数组和链表的基本操作。要注意的是对于值为负数的取模处理, if you directly calculate -4 % 3 you will get -1. You can use function: a % b = (a % b + b) % b to make it is a non negative integer.。/**
2016-05-30 22:42:01 415
原创 Merge k Sorted Arrays
此题是自己的一个学习过程,真是第一次用PriortyQueue,如何定义一个class并在当中实现Comparable接口,如何用PriortyQueue的思维去处理问题。在定义ArrayContainer中,一定要明确的是index到底代表什么,是自身数组的当前下标,而与[][]的循环无关,所以当中的第一个错误不应该。第二个错误,是告诉我们要处理边界条件。整个思路参考:点击打开链接/
2016-05-30 21:45:07 617
原创 Hash Function
此题,重在求模函数的运用。参考点击打开链接精华在hashSum = 33 * hashSum + key[i];/** * @param key: A String you should hash * @param HASH_SIZE: An integer * @return an integer */public int hashC
2016-05-30 13:32:33 340
原创 Median of two Sorted Arrays
参照点击打开链接用二叉搜索来处理此题以如下两个数组为例:012345a0a1a2a3a4a5012345b0b1b2b3
2016-05-29 20:27:50 355
原创 Partition Array
这道题用两根指针,向中间逼近。一定要注意的是corner case时的下标处理。/** *@param nums: The integer array you should partition *@param k: As description *return: The index after partition */ public int
2016-05-29 18:26:28 389
原创 Subarray Sum Closest
这道题让自己很囧,现在对于参考答案依然有嘻嘻哈哈的感觉。。。参考点击打开链接/** * @param nums: A list of integers * @return: A list of integers includes the index of the first number * and the index of the
2016-05-29 13:50:02 305
原创 Sort Colors
暴力的办法就是普通数组排序,但此题有其特殊性,即只有3个不同的数字,0,1,2,对此排序想法就是遇到0,就都放到最前面,遇到2,就都放到最后面,遇到1,就pass。但必须要注意的是对于遇到2,index i不能++前进,因为这个换来的数字可能是0 或是1,必须再次排序,但由于有了p2--,所以并不会死循环。/** * @param nums: A list of integ
2016-05-29 11:42:07 235
原创 Maximum Subarray
相比最初的暴力解法,这题有很多优化,我们选了类似于贪心的方式处理sum = sum + nums[i];而当sum/** * @param nums: A list of integers * @return: A integer indicate the sum of max subarray */ public int maxSubAr
2016-05-29 11:00:46 235
原创 Merge Sorted Array
这题补的是我们的基本功,数组merge,不要总想着正向走,还有逆着呢。两种解法,一个正向,太复杂了,一个逆向,我们得掌握的。补欠账!!/** * @param A: sorted integer array A which has m elements, * but size of A is m+n * @param B: sort
2016-05-29 10:03:25 203
原创 Subarray Sum
此题两种做法,暴力做法n方,如下注释部分,但当中还是有两个coner case没想到,只有一个0,和数组当中出现一个0优化的方法是用map,先sum = nums[i] + sum; 再if (map.containsKey(sum)) ,这个当中的思维,算是技巧,也是基本功。/** * @param nums: A list of integers * @retu
2016-05-29 09:35:44 287
原创 Trapping Rain Water
当中要设定smaller,用此去不断地和比其小的值相减,就可以得到面积。当中自己怀疑,一边会漏的情况,但事实上,我们判断选择时就选了最低的一边,而且是从两边向中间逼近的。可以放心/** * @param heights: an array of integers * @return: a integer */ public int trapRa
2016-05-28 21:02:35 267
原创 Container With Most Water
两种做法/** * @param heights: an array of integers * @return: an integer */ public int maxArea(int[] heights) { // write your code here//对撞指针,一次遍历 if (heights
2016-05-28 20:35:09 227
原创 Triangle Count
可能是lintcode上的标注有误,这个题感觉不该是hard,列出两种做法,一种,2层循环加双指针/** * @param S: A list of integers * @return: An integer */ public int triangleCount(int S[]) { // write your cod
2016-05-28 19:48:45 522
原创 Two Sum II
这该是一道挺简单的题,用两根指针一头一尾向中间逼近。计算数量时,一定要清楚,是这个,count = count + (right - left);, 而不是count++;/** * @param nums: an array of integer * @param target: an integer * @return: an integer
2016-05-28 19:18:54 228
原创 kSum
参考点击打开链接原文说的很好,尤其是使用三维动规数组dp[i][j][t],表示从0遍历到A[i]后找到的j个元素之和为t的情况的总数。最后返回从整个A数组找到的k个元素之和为target的情况总数即可。其余的就过遍数即可。/** * @param A: an integer array. * @param k: a positive integer (k
2016-05-28 18:45:31 368
原创 3Sum Closest
有了3Sum的基础,这个本来应该很好解决,但是自己却提交了5次。。。。咋搞的,到底要比较的是啥,下面咋那么多次错误public int threeSumClosest(int[] numbers, int target) { // write your code here if (numbers == null || numbers.length
2016-05-28 17:47:00 220
原创 kSumII
结合前面的permutation和combination的DFS来解这道题。再看看自己都错在哪里了!!!/** * @param A: an integer array. * @param k: a positive integer (k * @param target: a integer * @return a list of list
2016-05-28 17:01:26 267
原创 4Sum
会了3Sum,4Sum应该就是多来一笔了。/** * @param numbers : Give an array numbersbers of n integer * @param target : you need to find four elements that's sum of target * @return : Find all unique
2016-05-28 17:00:14 235
原创 3Sum
看看下面都错哪里了public class Solution { /** * @param numbers : Give an array numbers of n integer * @return : Find all unique triplets in the array which gives the sum of zero. */
2016-05-28 16:58:35 218
原创 2Sum
这是一道简单题,请看好了/* * @param numbers : An array of Integer * @param target : target = numbers[index1] + numbers[index2] * @return : [index1 + 1, index2 + 1] (index1 */ p
2016-05-28 16:56:51 252
原创 放平常心
刚才看着回想着我们现在刷题的情况,我觉得无论最后结果怎样,我们都应该有一颗平常心。我们一定会继续努力,继续用心,不到最后一刻,绝不松懈,绝不放弃。于是,还是,平常心,即可。加油!Work hard,Good luck!
2016-05-27 20:26:45 355
原创 backpackII
有了前一题的基础,此题就很直接了。前一题求重量,此题求的是价值,那么将重量换为价值即可。但是看看下面的一个bug,阴沟翻船啊!!!!!!咋搞的。。。。写的时候不看code吗/** * @param m: An integer m denotes the size of a backpack * @param A & V: Given n items with s
2016-05-27 18:04:49 336
原创 backpack
最后找到了一种容易理解的01背包问题解法。还是如何定义状态和状态转移方程我们定义了一个二维int数组,[i+1][j]代表前A[i]个物品在不超过j容量下,能取到的最大值。如果,第i个物品比当前容量大,则不放入A[i]物品,只用[i][j]即可;如果,第i个物品小于等于当前容量,则要比较:不放入A[i]物品时j容量能取得最大值,与,不放入A[i]物品时j-A[i]容量能取的最大
2016-05-27 17:38:18 320
原创 用心
晚上做backpack题,遇到困难。但最主要的是什么,我们得用心。刚才散步,我们对我们自己说了很多,很多,现在我们知道我们已经全身的投入了,那么最最最关键的就是要用心,用心,用心,全心的投入!我们感情上失败了,最重要的一个问题,就是我们用心用的太少,或者就是没有真正的用心,我们知道,这里面有我们心病的因素,但还是,我们没有好好用心,只是空有一颗真心,但没有把这颗真心最好的表达出来。。。我们
2016-05-27 15:52:53 221
原创 Decode Ways
单序列问题,定义一个length+1的一维数组,状态:[i]代表到字符i-1时的方案个数最重要的,也是自己忽略的,个数可以为0,如1230public int numDecodings(String s) { // Write your code here if (s == null || s.length() == 0) {
2016-05-27 13:14:44 200
原创 专心做题
前两天,晚上全是公司的事情。今天终于可以专心做题,dp的理解有突破,要继续加油!我们失去了。。这一个月我们过得很苦。。。但,无论如何,我们必须面对,必须振奋,必须前进。请记住,我们还有珍惜!请珍惜,请珍惜,请珍惜!为了我们的美好!Work hard,Good luck!
2016-05-26 18:53:26 249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人