03 2019 档案
摘要:124. Binary Tree Maximum Path Sum https://www.cnblogs.com/grandyang/p/4280120.html 如果你要计算加上当前节点的最大path和,这个节点的左右子树必定是纯左右树(即没有拐点), 用另一个参数保留整个二叉树的最大path和
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4464476.html 用动态规划做
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4276225.html 把数组中所有的数按照值存储到set中,然后在set中找相邻的值以获得这个区间 先把所有值存储在set中,然后减去的方式,这样可以避免重复计算 时间复杂度如果换成set就是n*logn 为什么这个是o(n
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4656517.html 使用双端队列维护一个单调递减的队列。使用双端队列的原因是,当顶部元素不在这个窗口的时候,就需要弹出,并且是从前面弹出,保证插入的元素的顺序不变。 单调递减是因为让双端队列的头部一直是当前窗口的最大值,只
阅读全文
摘要:112. Path Sum 自己的一个错误写法: 只有左右节点都为NULL时才是叶子节点,所以这个代码在例子[1,2],1的右节点时就判断错误了,这个右节点虽然sum满足条件,但他本身不是叶子节点 正确写法: 113. Path Sum II 第二种写法: 437. Path Sum III 注意:
阅读全文
摘要:207. Course Schedule https://blog.csdn.net/wongleetion/article/details/79433101 问题的实质就是判断一个有向图是否有环,利用入度去解决这个问题 使用bfs解决问题。 初始化时,利用二维vector存储节点间的关系,并存储每
阅读全文
摘要:84. Largest Rectangle in Histogram https://www.cnblogs.com/grandyang/p/4322653.html 整体思路是递增不处理,当遇到减少时,计算之前所有大于当前高度的最优解。因为实际上只要遇到比你小的,就不可能以你为高度了。索引之间的差
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4444160.html 相当于一个全排列,但是通过left、right控制个数,并且不符合要求的括号排列用left > right来控制了,让他不再递归,这样就不可能满足left == 0 ,right == 0,就不可能pu
阅读全文
摘要:21.Merge Two Sorted Lists 初始化一个指针作为开头,然后返回这个指针的next 23. Merge k Sorted Lists https://www.cnblogs.com/grandyang/p/4606710.html 这个是分治的思想 实质上就是每次合并一半的链表,
阅读全文
摘要:这个是用递归的方式写的,非递归也可以写。 注意判断的时候可能出现数组越界的问题,所以要判断mid - 1 < 0和mid + 1 >= nums.size(),即数组的头和数组的尾 如果不判断[1],1这种就会报错
阅读全文
摘要:20. Valid Parentheses 错误解法: "[])"就会报错,没考虑到出现')'、']'、'}'时,stack为空的情况,这种情况也无法匹配 正确解法: 32. Longest Valid Parentheses https://www.cnblogs.com/grandyang/p/
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4428207.html 从数组末尾向前找数字,找到第一个不属于递增序列的数字i,然后在递增序列中找到第一个比i大的数值进行交换,如果没有就拿末尾值与i交换。最后将i+1到末尾的数值进行反向。 注意:1.如果整个数组都没有 nu
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4452220.html 用迭代的方法,每次从3个字符中选择一个然后传给下一次迭代 index是遍历的digits的索引 自己写的另一种写法:
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/5928417.html https://www.cnblogs.com/liziran/p/6106534.html个子高的位置排好后,再怎么对个子矮的排,都不会影响个子高的人的相对位置 贪心的思想
阅读全文
摘要:从上往下打印二叉树这个是不分行的,用一个队列就可以实现 leetcode102题是分行打印的,相对于直接从上往下打印,需要把每行表示出来。同样利用队列,但是需增加两个变量来统计分行的信息。 注意一个细节:if(node->left != NULL) 与 if(!node->left) 不一样,即if
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/7404777.html 博客中写的<=2,实际上<=1也是可以的 相当于判断一个大指针内所有子字符串是否可能为回文
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4297300.html 用堆来辅助,先存储所有的左节点,再根据左节点找右节点
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/6395843.html 利用dfs的搜索把所有可能的情况找出来,然后判断。 此题还可以进一步优化
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/7098764.html 将个数出现最多的那个字符作为分隔的标准,一定是最小的。所以这个时候只需要计算还需要添加多少个idel就能找到整个的个数。 方法是:先计算个数最多的字符,并且判断有没有跟他个数相同的,如果这个字符出现的次
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4641968.html http://www.cnblogs.com/grandyang/p/4640572.html 利用二叉搜索树的性质:左子树所有节点小于根节点,右子树所有节点大于根节点 如果两个节点的最大值小于根节点,
阅读全文
摘要:字符串排列和PermutationsII差不多 Permutations第一种解法: 这种方法从0开始遍历,通过visited来存储是否被访问到,level代表每次已经存储了多少个数字 时间复杂度O(n!) 第二种解法: Permutations II 把第二个剪枝写在for循环一开始这种方式,实际
阅读全文
摘要:这道题给了我们一个数组,问我们这个数组能不能分成两个非空子集合,使得两个子集合的元素之和相同 https://www.cnblogs.com/grandyang/p/5951422.html
阅读全文
摘要:错误解法 [10,5,15,null,null,6,20]这种情况没考虑到,即这个代码只考虑了当前节点小于左节点、大于右节点,没有递归考虑他的root节点 https://www.cnblogs.com/grandyang/p/4298435.html 思路:二叉搜索树中,每个节点的数必定小于一个数
阅读全文
摘要:96. Unique Binary Search Trees https://www.cnblogs.com/grandyang/p/4299608.html 3由dp[1]*dp[1]、dp[0]*dp[2]、dp[2]*dp[0]相加而成 从2开始 也可以从1开始 95. Unique Bina
阅读全文
摘要:class Solution { public: int numJewelsInStones(string J, string S) { vector container(256,0); for(char s : S) container[s - '0']++; int count = 0; ...
阅读全文
摘要:https://blog.csdn.net/xinqrs01/article/details/55095134 https://www.cnblogs.com/grandyang/p/4800552.html 当前的数一定可以通过之前的数加上数的平方获得
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4635425.html 错误代码: 这个代码之后保证第一次,第二次反转就错了
阅读全文
摘要:leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种方法,利用奇偶性找规律
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/5138186.html 状态方程为dp[i] = min(dp[i-1],dp[i-2],dp[i-3]),可能会造成下标为负的情况。如果出现下标为负,这种情况跳过不计算就好了。 同时,有些金额换不出来。 所以在初始化的时候,
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/5849037.html
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/7058935.html
阅读全文
摘要:整体上3个题都是求subarray,都是同一个思想,通过累加,然后判断和目标k值之间的关系,然后查看之前子数组的累加和。 map的存储:560题是存储的当前的累加和与个数 561题是存储的当前累加和的余数与第一次出现这个余数的位置 325题存储的是当前累加和与第一次出现这个和的位置 其实561与32
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/4332313.html 在一个矩阵中能不能找到string的一条路径 这个题使用的是dfs。但这个题与number of islands有点不同,那个题中visited过的就不用再扫了,但是这个需要进行回溯回来。 所以使用了v
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/6591526.html 这个题本质上是中序遍历的反向。中序遍历是从小到大,而这个题目是从大到小,然后每个数加上比自己大的所有数的和。 因为实际上并没有改变树的结构,只是改变了原来树中节点的值,所以用void做返回值就可以了。
阅读全文
摘要:和剑指上树的子结构的题稍稍有点不同,
阅读全文
摘要:http://www.cnblogs.com/grandyang/p/4293853.html 用递归,先把左子树、右子树处理好,然后再将当前根节点和左、右子树进行处理。 处理的方式是将左子树换到右子树,且左子树为空,之前的右子树在整个新生成的右子树的最右节点
阅读全文
摘要:https://www.cnblogs.com/grandyang/p/6014408.html 用两个hash表来存储个数
阅读全文