- 博客(5)
- 收藏
- 关注
原创 LeetCode LCP 19. 秋叶收藏集 - Java & Go - 动态规划
文章目录LeetCode LCP 19. 秋叶收藏集1.算法2.Java3.GoLeetCode 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
122
原创 LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 - Java & Go - 二分查找改进
文章目录LeetCode34. 在排序数组中查找元素的第一个和最后一个位置解法11 算法2 Java3 Go解法21 算法2 Java3 GoLeetCode34. 在排序数组中查找元素的第一个和最后一个位置LeetCode34. 在排序数组中查找元素的第一个和最后一个位置解法11 算法算法1.两次二分查找2.第一次二分查找计算mid=(left + right) >> 1;,每次mid都偏向左边,可以保证找到的是第一个大于等于target的元素3.第二次二分查找计算mid
2020-12-01 18:18:31
149
原创 LeetCode327. 区间和的个数 - Java & Go - 归并排序
文章目录LeetCode327. 区间和的个数1 算法2 Java3 GoLeetCode327. 区间和的个数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
172
原创 LeetCode493. 翻转对 - Java & Go - 归并排序
文章目录LeetCode493. 翻转对1 算法2 Java3 GoLeetCode493. 翻转对LeetCode493. 翻转对1 算法算法1.归并排序2.对数组进行归并排序2.1 首先数组分成两个子数组分别递归归并,加到结果中,这时两个子数组都变成有序的了2.2 对两个有序的子数组可以很快求得满足条件的翻转对遍历左子数组每个元素对左子数组的每个元素,在右子数组找到满足条件的范围,加到结果中当遍历到左子数组下一个元素时,不必重新从头遍历右子数组找到满足条件的范围,因为两个
2020-11-29 20:04:35
98
原创 LeetCode976. 三角形的最大周长 - Java & Go - 排序 & 数学
文章目录LeetCode976. 三角形的最大周长1. 算法2. Java3. GoLeetCode976. 三角形的最大周长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
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人