- 博客(5)
- 收藏
- 关注
原创 LeetCode LCP 19. 秋叶收藏集 - Java & Go - 动态规划
文章目录LeetCode LCP 19. 秋叶收藏集1.算法2.Java3.Go LeetCode LCP 19. 秋叶收藏集 LeetCode LCP 19. 秋叶收藏集 1.算法 算法 1.动态规划 2.最重要调整为 [红 黄 红] 的形式,就记录每片叶子的状态为 [0, 1, 2] 分别对应三个状态,所以动态数组 dp[n][3] 中 dp[x][y] 表示前x片叶子调整到使第x片叶子处于y状态的最小调整次数 3.初始化:dp[i][j] 当 j > i 时,设定为最大值(因为 i <
2020-12-02 20:32:13
208
原创 LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 - Java & Go - 二分查找改进
文章目录LeetCode34. 在排序数组中查找元素的第一个和最后一个位置解法11 算法2 Java3 Go解法21 算法2 Java3 Go LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 解法1 1 算法 算法 1.两次二分查找 2.第一次二分查找计算mid=(left + right) >> 1;,每次mid都偏向左边,可以保证找到的是第一个大于等于target的元素 3.第二次二分查找计算mid
2020-12-01 18:18:31
340
原创 LeetCode327. 区间和的个数 - Java & Go - 归并排序
文章目录LeetCode327. 区间和的个数1 算法2 Java3 Go LeetCode327. 区间和的个数 LeetCode327. 区间和的个数 1 算法 算法 1.归并排序 2.计算前缀和sums[i]表示[0, i)的元素之和 3.对前缀和进行归并排序 首先将数组分成两半,递归对两个子数组进行归并排序,并将返回结果保存 这时两个子数组已经有序,可以统计这样的区间[x, y],x遍历左子数组,y遍历右子数组,求得sums[y] - sums[x]的值在[lower, upper]范围中的
2020-11-30 14:04:35
283
原创 LeetCode493. 翻转对 - Java & Go - 归并排序
文章目录LeetCode493. 翻转对1 算法2 Java3 Go LeetCode493. 翻转对 LeetCode493. 翻转对 1 算法 算法 1.归并排序 2.对数组进行归并排序 2.1 首先数组分成两个子数组分别递归归并,加到结果中,这时两个子数组都变成有序的了 2.2 对两个有序的子数组可以很快求得满足条件的翻转对 遍历左子数组每个元素 对左子数组的每个元素,在右子数组找到满足条件的范围,加到结果中 当遍历到左子数组下一个元素时,不必重新从头遍历右子数组找到满足条件的范围,因为两个
2020-11-29 20:04:35
129
原创 LeetCode976. 三角形的最大周长 - Java & Go - 排序 & 数学
文章目录LeetCode976. 三角形的最大周长1. 算法2. Java3. Go LeetCode976. 三角形的最大周长 LeetCode976. 三角形的最大周长 1. 算法 算法 1.排序 2.对于三个数 a > b > c,只要有 a < b + c 即可组成三角形 因为 a > b > c,所以 a + b > c && a + c > b 加上 b + c > a,所以 a b c可以组成三角形 3.排完序之后从大
2020-11-29 19:21:35
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人