LeetCode系列
每天坚持刷个几道LeetCode,记录思路以及解法,从而提高自身算法能力。
随风丶逆风
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题系列-410. 分割数组的最大值
题目LeetCode 传送门给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和原创 2020-07-26 01:44:25 · 1123 阅读 · 0 评论 -
LeetCode刷题系列-95. 不同的二叉搜索树 II
题目给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。思路拓展我们先不考虑如何构建二叉树,将当前题目改为:给定一个整数 `n`,返回所有由 `1 ... n` 为节点所组成的二叉搜索树的个数。二叉搜索树的定义:1. 左子树中的节点比根节点小2. 右子树中的节点都比根节点大原创 2020-07-21 23:25:34 · 258 阅读 · 0 评论 -
LeetCode 刷题系列-312. 戳气球
题目LeetCOde 传送门有 n 个气球,编号为 0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 num原创 2020-07-19 21:34:20 · 519 阅读 · 0 评论 -
LeetCode刷题系列-785. 判断二分图
题目leetcode传送门给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:graph[i] 中不存在i,并且graph[i]中没有重复的值。注意点:graph 的长度范围为 [1原创 2020-07-16 21:20:31 · 465 阅读 · 0 评论 -
LeetCode刷题系列-94. 二叉树的中序遍历
题目Leetcode传送门给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法一:递归解题思路树的前序、中序和后序遍历都可以通过递归解决。这里将大问题拆分成小问题,写递归式子:假如第n个节点的中序遍历结果为f(n),那么它就由当前节点左子树的中序遍历结果加上当前节点的值 以及当前节点右子树的中序遍历结果,即f(n) = f(n.l原创 2020-07-16 01:44:38 · 245 阅读 · 0 评论 -
LeetCode刷题系列-120. 三角形最小路径和
题目LeetCode传送门给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2 + 3 + 5 + 1 = 11)。说明如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加原创 2020-07-15 12:55:52 · 347 阅读 · 0 评论