摘要: "84. 柱状图中最大的矩形" 用到了单调栈的知识,还是第一次碰到。学习了好久 看这两篇文章吧: "直方图中最大的矩形" "单调栈小结" 简单来说,维护一个单调栈,如果当前元素大于栈顶元素,则把当前元素的坐标入栈,否则,弹出栈顶元素直到当前元素可入栈。 在栈顶元素弹出时,把弹出的元素当成最短木板,计 阅读全文
posted @ 2018-07-30 22:21 ACBingo 阅读(766) 评论(0) 推荐(0) 编辑
摘要: "82. 删除排序链表中的重复元素 II" 83题的扩展,相比于83题。我们增加一个last_last来记录重复元素前面的节点即可 阅读全文
posted @ 2018-07-30 17:06 ACBingo 阅读(223) 评论(0) 推荐(0) 编辑
摘要: "83. 删除排序链表中的重复元素" 链表操作 阅读全文
posted @ 2018-07-30 16:58 ACBingo 阅读(106) 评论(0) 推荐(0) 编辑
摘要: "81. 搜索旋转排序数组 II" public class Solution { // 这个问题在面试中不会让实现完整程序 // 只需要举出能够最坏情况的数据是 [1,1,1,1... 1] 里有一个0即可。 // 在这种情况下是无法使用二分法的,复杂度是O(n) // 因此写个for循环最坏也是 阅读全文
posted @ 2018-07-30 16:45 ACBingo 阅读(216) 评论(0) 推荐(0) 编辑
摘要: "80. 删除排序数组中的重复项 II" 模拟,没啥意思。。就是挪数而已 class Solution { public int removeDuplicates(int[] nums) { int cnt = 0; int len = nums.length; int top = 0; int l 阅读全文
posted @ 2018-07-30 16:38 ACBingo 阅读(370) 评论(0) 推荐(0) 编辑
摘要: "208. 实现 Trie (前缀树)" 实现Trie树,网上教程一大堆,没啥可说的 public class Trie { private class Node { private int dumpli_num;////该字串的重复数目, 该属性统计重复次数的时候有用,取值为0、1、2、3、4、5 阅读全文
posted @ 2018-07-30 16:13 ACBingo 阅读(754) 评论(0) 推荐(0) 编辑
摘要: "212. 单词搜索 II" 这leetcode的评判机绝对有问题!!同样的代码提交,有时却超时!害得我至少浪费两个小时来寻找更优的答案= =,其实第一次写完的代码就可以过了,靠!!!第207位做出来的 趁热,我把 "79. 单词搜索" 也做了一下 与79题完全,无非是从一个word变成了多个wor 阅读全文
posted @ 2018-07-30 16:11 ACBingo 阅读(272) 评论(0) 推荐(0) 编辑
摘要: "79. 单词搜索" 这个题跟前两个题思路类似,递归搜即可 先找到首节点,然后4个方向去搜。 状态函数:dfs(int i, int j, int k, char[][] board, String word, int m, int n, boolean[][] f) i,j表示当然已经搜到了节点( 阅读全文
posted @ 2018-07-30 16:00 ACBingo 阅读(136) 评论(0) 推荐(0) 编辑
摘要: "78. 子集" 与 "77. 组合" 几乎一样,我们只需将代码稍微改一下即可: 1. k是需要变动的了,从1~n。我们在dfs外层加个循环枚举k即可 2. 取数集合不再是从数字[1,n]取了,需要从集合nums总选取一个数来(其实道理是一样的,我们换成坐标即可,也就是[nums[0],nums[1 阅读全文
posted @ 2018-07-30 13:27 ACBingo 阅读(106) 评论(0) 推荐(0) 编辑
摘要: "77. 组合" 递归回溯枚举搜就好 dfs状态(int n, int k, int last, List cur, List ans) n表示从[1~n]中取数,k表示当前状态下还需要取几个数,last表示上一个数取的是几,cur表示当前已经取的数。ans为总的答案list,最后要返回到main的 阅读全文
posted @ 2018-07-30 13:25 ACBingo 阅读(512) 评论(0) 推荐(0) 编辑
摘要: "76. 最小覆盖子串" 脑子不清醒的时候, 不要刷题,不要刷题,不要刷题。。。。 我这么困,为什么要刷题! 在串S上维护i,j两个指针,i表示当前包含T所有字母的起始位置,相反j是终止位置。 首先让j一直加,直到找到了字串s.substring(i,j)满足条件。之后,j再++,每碰到一个T中拥有 阅读全文
posted @ 2018-07-30 00:01 ACBingo 阅读(368) 评论(0) 推荐(0) 编辑