随笔分类 -  Leetcode

1 2 3 4 5 ··· 12 下一页
摘要:刷 Aug 17 2019 这个题还是蛮好的,看提示是区间题,包括binary index tree和segment tree。前者早JB忘了怎么做了,后者想了一会也没想出来= = 第一个做法是从后开始拿元素,然后往新的list里面放,保持新的list是sorted,放进去的位置就是当前比它小的元素 阅读全文
posted @ 2019-08-18 13:21 哇呀呀..生气啦~ 阅读(214) 评论(0) 推荐(0)
摘要:刷 July 27 2019 "84. Largest Rectangle in Histogram" 的延伸版。。以每一行建图,然后用84的方程算。 按理说这个应该是 "221. Maximal Square" 的变体,221是看左、上、左上的DP来算,因为221里面是算正方形,这里是矩形,直接没 阅读全文
posted @ 2019-07-28 15:42 哇呀呀..生气啦~ 阅读(114) 评论(0) 推荐(0)
摘要:刷 July 27 2019 这个题做了好久,面试遇到就跪了,只会暴力解。 而且也讲不明白。简单说就是用stack保证递增: 添加2,下一个是1,不递增了,POP出2然后算结果是乘积是2. 继续添加1 5 6,然后下一个是2,不递增了,POP出6和5算乘积是6和10. 添加2和3,此时STACK里是 阅读全文
posted @ 2019-07-28 15:17 哇呀呀..生气啦~ 阅读(124) 评论(0) 推荐(0)
摘要:刷 July 10 2019 高级DFS+剪枝 难的地方在于如何处理乘法,比较巧妙的办法是把这一层运算的值也传下去。 1 + 2 3 ,把2的数量传入下面,如果是 这种高级运算,就先reset上一层的结果,先 刚才加上的2,再算3,传下去的是2 3这样。 然后,可以数不是非要1位= =这样如果多余1 阅读全文
posted @ 2019-07-11 14:35 哇呀呀..生气啦~ 阅读(162) 评论(0) 推荐(0)
摘要:刷 July 10 2019 其实是个DFS的题,每个括号都可以选择去掉,或者不去掉来形成最后的结果。 比较难想到的一个地方是删和不删的标准。 首先遍历记录下需要删除的左括号和右括号的数量 最终解这2个都要是0。 DFS的时候,还要计算没闭合的括号的数量,因为只算上面的话,比如()())(),多一个 阅读全文
posted @ 2019-07-11 13:38 哇呀呀..生气啦~ 阅读(206) 评论(0) 推荐(0)
摘要:刷 July 10 2019 我会N^N的办法= =简而言之是不会做。 看答案先找出了所有违规的括号的位置,比如())默认第二个)是违规的。 找出来之后就相当于xxxxxxx违规xxxxx违规xxx违规xxx 找出最长X就行了,有EDGE CASE需要考虑: Stack空了之后最后还要再算一次比如( 阅读全文
posted @ 2019-07-11 12:10 哇呀呀..生气啦~ 阅读(93) 评论(0) 推荐(0)
摘要:刷 July 10 2019 这个题思路一上来就错了,一开始把重心放在括号上,每个位置可加可不加来做DFS然后就傻逼了。 比如A+B+C+D是按运算符来做DFS: A + (B+C+D) (A+B) + (C+D) (A+B+C) + D 他与一般的分治不同的地方在于,左边和右边都是返还List,拿 阅读全文
posted @ 2019-07-10 15:10 哇呀呀..生气啦~ 阅读(147) 评论(0) 推荐(0)
摘要:刷 July 10 2019 这个题,有点像course schedule,然后初始点是JFK已经告诉你了。用node, list来建图,正常DFS就行。 这个2个需要注意: 要求排序,LIST需要排序,所以用了PQ 有[JFK, PDX][JFK, DUB][PDX, NRT]这样,DUB放在最后 阅读全文
posted @ 2019-07-10 15:08 哇呀呀..生气啦~ 阅读(131) 评论(0) 推荐(0)
摘要:刷 July 06 2019 和133一样 先收集所有的NODE,建立一套新的,此时新的直接没有指针关系。 遍历新的,通过VAL来找到原来的NODE,看看原来NODE指向哪,就把当前指向新的那个位置。 public Node copyRandomList(Node head) { if (head 阅读全文
posted @ 2019-07-07 10:25 哇呀呀..生气啦~ 阅读(145) 评论(0) 推荐(0)
摘要:刷 July 01 2019 这个题是BFS做的,从最外一圈算indegree,需要注意的是要以一圈为一个单位,不是像course schedule那样可以尽情从1个点开始。 最里面那圈的值就是最终的结果,可以是1,也可以是2个。 一开始按course schedule的办法,走一遍所有的点,这是多 阅读全文
posted @ 2019-07-02 14:03 哇呀呀..生气啦~ 阅读(99) 评论(0) 推荐(0)
摘要:刷 June 22 2019 这个题做得那叫一个烂。。 找2个数组的中位数: 先找到每个数组的1/4位数然后比较:较小数组里到中位的部分可以舍弃. 这里其实已经把范围缩小到2个数组分别的0~k/4 下一次计算就要找到2个数组的0~k/8,这样下去总能找到 然后, 这个人是可以普及到Kth small 阅读全文
posted @ 2019-06-23 13:45 哇呀呀..生气啦~ 阅读(114) 评论(0) 推荐(0)
摘要:刷 June 21 2019 找到最小值。 二分,通过M和R的大小判断最小值在哪边,最后停留的位置[A, B]里AB的大小为止,所以比较一下。 阅读全文
posted @ 2019-06-22 13:03 哇呀呀..生气啦~ 阅读(81) 评论(0) 推荐(0)
摘要:刷 June 21 2019 。。和上一题一样,一样在记录比解题用时间长。 阅读全文
posted @ 2019-06-22 11:34 哇呀呀..生气啦~ 阅读(92) 评论(0) 推荐(0)
摘要:刷 June 21 2019 记这个题比写这个题花的时间多。不过其实这就是YSLR的YS应用。 java public int firstBadVersion(int n) { int l = 1, r = n; while (l 阅读全文
posted @ 2019-06-22 11:29 哇呀呀..生气啦~ 阅读(113) 评论(0) 推荐(0)
摘要:刷 June 21 2019 这个题居然也没记录过? 没法直接二分,因为不是完全排列的。 左下开始 O(row + col) 阅读全文
posted @ 2019-06-22 11:09 哇呀呀..生气啦~ 阅读(116) 评论(0) 推荐(0)
摘要:刷 June 21 2019 这个居然也没记过? 二维转一维,用的究极二分大法,但是如果因为超左右边界而找不到。 yes left, no right = 找不到的话L是停在最右边超过的地方,最后判断会out of boundary.. java public boolean searchMatri 阅读全文
posted @ 2019-06-22 05:59 哇呀呀..生气啦~ 阅读(173) 评论(0) 推荐(0)
摘要:刷 June 21 2019 Trie + word search是CS1501的作业题,当时做了1个月。 DFS + backtrack + trie,正好复习了一下dfs + backtrack 说说做错的地方: 一开始是用board[][]建字典,枚举所有可能,然后在里面搜索words,这样建 阅读全文
posted @ 2019-06-21 16:24 哇呀呀..生气啦~ 阅读(118) 评论(0) 推荐(0)
摘要:刷 June 20 2019 这个题还是蛮好的啦~(台湾腔)这个人还是长得蛮像个傻逼的啦。。 最后的答案只需要[startX, height]就行了,而且第一个0的高度是不需要的= = 给的各种[start, end, height],需要按照start来排序,目的是从左到右建立各种高度的区间。 [ 阅读全文
posted @ 2019-06-21 11:23 哇呀呀..生气啦~ 阅读(140) 评论(0) 推荐(0)
摘要:刷 June 19 2019 这傻逼题居然做了好久,动态维持lower bound,然后楞做。 重点在于edge case的处理。200 thump up, 1000+ thump down都是被edge case恶心的。。 一个是数组里可以有重复的。。 一个是边界,upper == nums[最后 阅读全文
posted @ 2019-06-20 12:49 哇呀呀..生气啦~ 阅读(185) 评论(0) 推荐(0)
摘要:刷 June 19 2019 这个题居然也没记过,可能当时觉得太简单了。 楞做法 然后另一种是通过nums[r] nums[l] == r l 来迅速完成l r 缺点是在[1,3,5,7,9,11]这种每次R都要从最右边到最左边,反而变成O(n²)了 其实可以二分,类似于归并排序的办法,缺点是mer 阅读全文
posted @ 2019-06-20 11:58 哇呀呀..生气啦~ 阅读(208) 评论(0) 推荐(0)

1 2 3 4 5 ··· 12 下一页