分类: 算法训练

219 篇文章

LeetCode226. 翻转二叉树
一、思路 我还想着二叉树遍历(非递归)忘了呢,转念一想,这儿又没有要求不能用递归,递归它不香吗? 二、问题 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使…
thumbnail
LeetCode116. 填充每个节点的下一个右侧节点指针
一、思路 经过画图发现,儿子之间连接没问题。但是不同父亲的孙子连接有问题,解决一个倒还好,巧妙的是经过递归,可以解决所有这类问题。 总是想着把问题分治,但分治完了却没想到可以还原回去。。。 二、问题 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node …
LeetCode188. 买卖股票的最佳时机IV
一、思路 选择是有上限的,10张彩票让你买,你最多也只能买10张。 为什么在乎这个选择的数量呢?因为我将题目中的无限次可交易次数作为了选择:选一次交易次数,选两次交易次数。然后取最优的选择。 动态规划的精髓就是找出选择项,再去做选择 二、问题 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价…
LeetCode123. 买卖股票的最佳时机III
一、思路 找出选择和状态 二、问题 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。   示例 1: 输入:prices = [3,3,5,0,0,3,1,4] 输出:6 解释:在第 4 天…
LeetCode122. 买卖股票的最佳时机II
一、思路 找出选择和状态 二、问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。   示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解…
LeetCode121. 买卖股票的最佳时机
一、思路 找出选择和状态 二、问题 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。   示例 …
thumbnail
LeetCode986. 区间列表的交集
一、思路 这个区间问题,在两个列表里,互相比较。采用双指针是实现这个过程。 分为两种情况,相交和不相交。相交情况,end取两个区间的最大值。不相交时,看哪个区间大,当前的end是小的区间的最大值。下一对start,end取大的个区间。 什么时候指针移动呢?根据两个当前区间的最大值,小的个指针就往前移。因为一直在进行两个区间的比较,所以趋向于两个指针…
LeetCode56. 合并区间
一、思路 通过画图找规律 区间问题先排序 二、问题 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。   示例 1: 输入:intervals = [[1,3],[2,6],[8,10…
LeetCode1288. 删除被覆盖区间
一、思路 通过画图分析出区间覆盖的条件 区间问题一般通过排序,才能更好的处理 二、问题 给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。 只有当 c
LeetCode167. 两数之和II_输入有序数组
一、思路 题目凸显了有序,一般来说,有序和双指针关联,无序和哈希表关联。 这里就是用双指针解决的 二、问题 给定一个已按照 升序排列  的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当…