- 博客(13)
- 收藏
- 关注
原创 算法-分治算法
① 将原问题分解成若干个规模较小的子问题(子问题和原问题的结构一样,只是规模不一样)② 子问题又不断分解成规模更小的子问题,直到不能再分解(直到可以轻易计算出子问题的解)③ 利用子问题的解推导出原问题的解分治策略非常适合用递归需要注意的是:子问题之间是相互独立的。
2023-09-15 11:21:12 35 1
原创 算法:经典贪心算法--跳一跳[2]
这道题是典型的贪心算法,通过局部最优解得到全局最优解。反向思维解决每次都找最左位置-最后一个位置,距离最远,即最大概率最小跳跃次数。【解题口:寻找最左位置–寻找的次数,即最小跳跃次数】我们的目标是到达数组的最后一个位置,因此我们可以考虑最后一步跳跃前所在的位置,该位置通过跳跃能够到达最后一个位置。如果有多个位置通过跳跃都能够到达最后一个位置,那么我们应该如何进行选择呢?直观上来看,我们可以「贪心」地选择距离最后一个位置最远的那个位置,也就是对应下标最小的那个位置。
2023-09-13 14:52:38 122
原创 算法[动态规划]---买卖股票最佳时机
本题动态规划法的思路解析---有股票和没股票结合买入卖出的情况考虑状态因为,从最后一天往前看,分成四种情况:A:前一天有股票,并卖出 – 剩余股票数0B:前一天没有股票,并不买入 – 剩余股票数0C:前一天有股票,并不买出 – 剩余股票数1D:前一天没有股票,并买入 – 剩余股票数1当剩余股票数0时,最大的利润是max(A, B)当剩余股票数1时,最大的利润是max(C, D)
2023-09-12 16:43:59 33
原创 算法:贪心---跳一跳
从终点开始算,判断终点之前是否有位置能到达终点。有,就将当前点当做终点;无,则继续向前判断。当终点与起点重合时,则能从起点跳到终点。
2023-09-12 16:39:38 20
原创 算法:移除数组中的val的所有元素---双指针[2]
本题比较简单,只需要抓住,题意要求:原地移除,原地==>结果只能输出到原数组上面,移除,则结果数组长度比原数组更短。利用结果数组从0,开始left++进行收集,而原数组使用right指针从0开始遍历,判断当前元素是否可以被收集起来。==> 目的就是收集所有符合条件的元素。
2023-09-09 21:18:22 33 2
原创 算法:删除有序数组中的重复项---双指针[3]
有序数组,剔除掉相等的,拿当前位置的元素去和前一个元素比较,即if (nums[fast]!并且 0 位置的元素早就进入结果集,需要看后面的元素是否进结果,则定义的两个指针开始判断收集的起点下标从1开始。
2023-09-09 21:17:35 22 1
原创 算法:轮转数组---循环取模运算
轮转、循环 k 步,要想到取模运算,另外需要一个新数组作为结果数组是因为如果我们不使用额外数组,我们直接将每个数字放至它最后的位置,这样被放置位置的元素会被覆盖从而丢失,所以需要一个新数组作为结果数组,最后拷贝回去原数组。
2023-09-09 21:16:49 46 1
原创 算法:数组中的最大差值---“打擂台法“
本题比较简单,只需要抓住,有序递增的两个数组,直接当队列,抓最小。当然更简单的是直接把其中一个数组的全部元素存储到另外一个数组后面的空间,然后利用封装好的方法排序即可,即 Arrays.sort() 方法本题比较简单,只需要抓住,题意要求:原地移除,原地==>结果只能输出到原数组上面,移除,则结果数组长度比原数组更短。利用结果数组从0,开始left++进行收集,而原数组使用right指针从0开始遍历,判断当前元素是否可以被收集起来。==> 目的就是收集所有符合条件的元素。
2023-09-09 21:15:56 71 1
原创 数组的合并--双指针[快慢指针]
本题比较简单,只需要抓住,有序递增的两个数组,直接当队列,抓最小。当然更简单的是直接把其中一个数组的全部元素存储到另外一个数组后面的空间,然后利用封装好的方法排序即可,即 Arrays.sort() 方法本题比较简单,只需要抓住,题意要求:原地移除,原地==>结果只能输出到原数组上面,移除,则结果数组长度比原数组更短。利用结果数组从0,开始left++进行收集,而原数组使用right指针从0开始遍历,判断当前元素是否可以被收集起来。==> 目的就是收集所有符合条件的元素。
2023-09-09 21:15:14 22 1
原创 算法:数组常见套路1---双指针、取模、打擂台法
本题比较简单,只需要抓住,有序递增的两个数组,直接当队列,抓最小。当然更简单的是直接把其中一个数组的全部元素存储到另外一个数组后面的空间,然后利用封装好的方法排序即可,即 Arrays.sort() 方法本题比较简单,只需要抓住,题意要求:原地移除,原地==>结果只能输出到原数组上面,移除,则结果数组长度比原数组更短。利用结果数组从0,开始left++进行收集,而原数组使用right指针从0开始遍历,判断当前元素是否可以被收集起来。==> 目的就是收集所有符合条件的元素。
2023-09-09 21:14:20 119 1
空空如也
是谁chatGPT还没有账号呀
2023-09-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人