自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 算法训练营day52,204. 计数质数

爱拉陶斯芬筛法,简称埃氏筛或爱氏筛。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7。

2024-05-10 22:04:25 390

原创 算法训练营day51(补), 单调栈3

/头部添加一个元素0。//尾部添加一个元素0。

2024-03-17 11:11:04 299

原创 算法训练营day50(补),单调栈2

/因为收尾相连,采用i%2运算实现循环。

2024-03-17 09:47:10 500

原创 算法训练营day49(补), 单调栈1

/如果nums2[top]值是map的key找到了要的结果。//计算当前下标与栈顶值之差就是要的结果。//nums1值和下标做映射。//小于等于直接入栈。

2024-03-13 21:24:19 342

原创 算法训练营day48,动态规划16

/相差大于1看dp[i + 1][j - 1]是否为true,为true也是回文。// 如果j和i相同,字符串等a是回文,如果j和i之差等于1 ,字符串等aa也是回文。//不相等取左右两边最大值。//左右两边相等加2。

2024-03-11 22:27:46 433

原创 算法训练营day47,动态规划15

/当word1、word2字符串元素不相等,即可以删除word1的元素,也可以删除word2的元素,还可以两个数组元素都删除,因为求最少,所以取三者最小值。//当word1、word2字符串元素不相等,即可以删除或者添加word1的元素,还有替换元素,求最小值。//同样当word1为空需要删word2的全部元素长度为j。//同样当word1为空需要删word2的全部元素长度为j。//当word2为空需要删word1的全部元素长度为i。//当word2为空需要删word1的全部元素长度为i。

2024-03-10 19:41:32 310

原创 算法训练营day46,动态规划14

/本题与求最长公共子序列相似,区别在于,如果s是t的子序列,那么最长公共子序列的长度等于s的长度,否则s不是t的子序列。//如果s为空字符串,则至少有1种,因此初始化为1。

2024-03-10 13:47:56 450

原创 算法训练营day45(补),动态规划13

*本题与求最长重复子序列相似,不同之处在于不要求是连续的了,但要有相对顺序, 即:"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。因此text1[i-1]和 text2[j-1] 相同一样,直接+1,不相同则在dp[i][j-1]与dp[i-1][j]之间取最大值*/// 求最大子数组和就是让nums数组当前值和dp数组上一个值相加,在与nums数组当前比较,取最大值。//最大值初始值为数组第一个数,不能给0。//本质上还是求最长公共子序列。

2024-03-09 22:00:24 429

原创 算法训练营day44(补),动态规划12

/因为要求连续,遍历1次即可。//收集所有重复子序列。

2024-03-09 18:18:34 300

原创 算法训练营day43(补),动态规划11

/第K次买入后的利润。//第K次不持有的利润。//不持有的利润含有手续费。//买卖股票的最佳2的升级版。//买卖股票的最佳2的升级版。

2024-03-07 22:13:55 352

原创 算法训练营day42(补),动态规划10

/第一次买入后的利润。//第一次不持有的利润。//第二次买入后的利润。//第二次不持有的利润。

2024-03-06 22:05:41 491

原创 算法训练营day41(补),动态规划9

/环形可以拆成去掉头和去掉尾两个数组分别求最大值,然后取二者最大值。//相邻不能偷,从2开始。

2024-03-05 21:09:11 276

原创 算法训练营day40(补),动态规划8

for j := 0;j++ { // 遍历物品。for i := 1;i++ { // 遍历背包。w := s[j:i] //截取字符串。

2024-03-05 15:50:17 300

原创 算法训练营day39(补),动态规划7

当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。j++ { // 遍历背包。每次你可以爬至多m (1 <= m < n)个台阶。for i := 0;for i := 1;j++ { // 遍历背包。for j := 1;j++ { // 遍历背包。for i := 1;for i := 1;for i := 1;1 阶 + 1 阶 + 1 阶段。

2024-03-04 18:00:55 336

原创 算法训练营day38(补),动态规划6

/求装满背包有几种方法,递推公式一般都是dp[i] += dp[i - nums[j]];问背包能背的物品最大价值是多少?

2024-02-29 23:02:13 551

原创 算法训练营day37(补),动态规划5

/如果是奇数肯定无法得到目标值,直接返回0。//先统计每个字符串0的数量。

2024-02-28 22:47:24 542

原创 算法训练营day35, 二叉搜索树的范围和

/中序遍历左中右处理即可。

2024-02-26 22:33:17 330

原创 算法训练营day36(补),动态规划4

/ 当前物品weight[i]重量大于背包重量j,此时不能再放物品,他的最大价值就是dp[i-1][j]//否则判断背包减去当前物品weight[i]重量+当前物品价值,和之前价值取最大值。// weight表示物品重量 value表示物品价值, bagweight背包容量。///这里必须倒序,区别二维,因为二维dp保存了i的状态。问背包能背的物品最大价值是多少?

2024-02-26 22:31:10 331

原创 算法训练营day35, 复习二叉树3

/思路先用中序遍历 左中右获取有序数组,在用二分法寻找最大,最小值。//中序遍历获取有序数组。

2024-02-24 19:55:04 456

原创 算法训练营day35(补),动态规划3

/ 初始值,0,1没有意义,为零,2可以拆为1*1=1。//拆分的数尽量相等才能保证最大。

2024-02-24 19:52:03 307

原创 算法训练营day34, 复习二叉树2

/用切片模拟队列存放当前层节点。//将下一层变成当前层。

2024-02-23 21:02:21 394

原创 算法训练营day34(补), 动态规划2

/如果在起点或终点出现了障碍,直接返回0。// 行赋初始值为1,有障碍物停止。// 列赋初始值为1,有障碍物停止。// 行赋初始值为1。// 列赋初始值为1。

2024-02-23 21:00:23 1060

原创 算法训练营day33(补),复习二叉树1

/如果前序数组只剩1个,说明只有左子树或者右子树。// 889. 根据前序和后序遍历构造二叉树。// 前序中左右 后序遍历左右中。//前序数组去掉root节点。//后序数组去掉root节点。

2024-02-22 22:50:29 268

原创 算法训练营day33(补),动态规划1

/因为求最小花费,dp[i]取前1个与前2个的最小值。本质上就是斐波那契数列但是用递归法,力扣提交会超时。的台阶开始爬楼梯, 那么初始值0,1都赋值为零。//最高值是 len(cost) + 1。//可以选择从下标为。

2024-02-22 22:46:01 385

原创 算法训练营day32,贪心算法6

/如果前一个数字比当前值大,说明不是单调递增的,把前一个数字减1,之后所有数字变成9。

2024-02-20 22:11:26 570

原创 算法训练营day31,贪心算法5

/如果当前左边界比结果数组最后一个右边界比小,说明重叠。//如果当前左边界比前一个右边界比小,说明重叠需要删除。count := 0 //移除数量。//按第一位从小到大排序。

2024-02-19 22:24:05 1550

原创 算法训练营day30,贪心算法4

if people[i][0] == people[j][0] { //如果身高相等则按照k从小到大排序。return people[i][0] > people[j][0] //身高由大到小排序。//如果是20元,可以找10元+5元或者3个五元,优先采用10+5方式。//如果最开始就大于5元,肯定无法找零直接返回false。// 如果当前边界比之前边界大,则沿用之前边界。//等于5元直接收下不用找零,five++//如果没有五元找零,直接返回false。//如果是10元,且有5元可以找零。

2024-02-17 10:21:11 1194

原创 算法训练营day29, 贪心算法3

/如油箱剩余量小于零则把下标移动到下一个,同时油箱归零。//如果所有加油站油耗剩余小于零则说明无法跑完一圈返回-1。//如果k还没用完且为奇数,把最小值转为负数,影响最小。//比较当前值和前一个值+1中取二者最大值。sum := 0 //统计所有加油站油耗剩余。index := 0 //出发时加油站的编号。curSum := 0 //统计油箱剩余量。//将数组中负数转为正数。

2024-02-16 22:11:52 723

原创 算法训练营day28(补), 贪心算法2

result := 0 //利润总和。result := 0 //步骤统计。next := 0 //下一个指针。cur := 0 //当前指针。step := 0 //步数。

2024-02-16 19:33:51 791

原创 算法训练营day27(补),贪心算法1

if count >= maxSum { //取子序列和最大值。if count

2024-02-15 20:38:22 703

原创 算法训练营day25(补),回溯5

if i > 0 && numList[i] == numList[i-1] && user[i-1] == false { //过滤重复。if user[numList[i]] { //已用过的数直接跳过。if user[i] { //已用过的数直接跳过。//记录数组每一个元素是否使用过。//记录数组每一个元素是否使用过。//记录数组每一个元素是否使用过。//因为是组合所有元素又要。

2024-02-14 20:02:41 580

原创 算法训练营day24(补),回溯4-2

if i > 0 && numList[i] == numList[i-1] && user[i-1] == false { //过滤重复。sort.Ints(nums) //排序后面做剪枝。//记录数组每一个元素是否使用过。

2024-02-14 15:36:06 359

原创 算法训练营day24补,回溯4-1

path = append(path, str1) // 符合条件的就进入下一层。//一个合法IP最少1*4=4位,最大3*4=12位,超过或小于都不合法。//path有4个元素就可以构成一个IP。//判断ip是否合法。

2024-02-07 22:00:24 265

原创 算法训练营day23(补),回溯3

if i > 0 && candidates[i] == candidates[i-1] && user[i-1] == false { //过滤重复。if candidates[i] > target { //剪枝。if candidates[i] > target { //剪枝。sort.Ints(candidates) //排序后面做剪枝。sort.Ints(candidates) //排序后面做剪枝。//记录数组每一个元素是否使用过。//对字符串进行切割。

2024-02-06 22:36:33 691

原创 算法训练营day22, 回溯2

/当单次集合大小和k值相等,找到本次集合,但path需要一直使用需要用temp临时存储然后赋给result。if sum+i > n { // 剪枝。

2024-02-04 22:09:03 601

原创 算法训练营day21,回溯1

/当单次集合大小和k值相等,找到本次集合,但path需要一直使用需要用temp临时存储然后赋给result。if n-i+1 < k-len(path) { // 剪枝。

2024-02-03 20:41:10 363

原创 算法训练营day20,二叉树9

/同样因为不确定右子树是否还要删除,因此要不断向左遍历,因为是二叉树搜索树,当前节点如果比high 大,当前节点右子树一定比high 大,因此直接舍弃,不用遍历。//因为不确定左子树是否还要删除,因此要不断向右遍历,因为是二叉树搜索树,当前节点如果比low小,当前节点左子树一定比low小,因此直接舍弃,不用遍历。// 中序遍历是左中右,但我们要先取最大值,所以要逆中序遍历,即右中左。//因为是有序数组,让中间节点作为根据节点,然后进行前序遍历中左右。//找到要删除的左子树。

2024-02-01 21:47:09 388

原创 算法训练营day19,二叉树8-2

5.找到要删除的节点,左指针不为空,右指针不为空,这种情况最复杂,需要调整二叉树结构,既可以让左子树继承,也可以让右子树继承。//5.找到要删除的节点,左指针不为空,右指针不为空,让右子树继承。// 3.找到要删除的节点,左指针不为空,右指针为空。//4.找到要删除的节点,左指针为空,右指针不为空。3.找到要删除的节点,左指针不为空,右指针为空。4.找到要删除的节点,左指针为空,右指针不为空。//2.找到要删除的节点是叶子节点。//根据上述分析,第五点让右子树继承写法。//1.未找到要删除的节点。

2024-01-31 22:37:49 604 1

原创 算法训练营day19,二叉树8-1

/如果p,q比root小,说明在左子树,向左移动。// 因为二叉搜索树是有序的可以按val值大小进行移动。//如果p,q比root大,说明在右子树,向右移动。要容易一些,因为二叉搜索树是有序的。// val比root值小向左移动。// val比root值大向右移动。//本题比昨天236。

2024-01-31 22:27:26 290

原创 算法训练营day18, 二叉树7

/如果统计次数大于最大统计,则把result数组清空并把当前值赋给数组result,否则result增加一个值。//如果前一个节点不为空,且当前节点值与上一个节点值差小于result,则把这个差值赋给result。//如果上一个节点值与当前节点值相等,count累计加1,不相等则重新从1计算。//同样也要内部封装一个递归函数。//同样还是要内部创建递归函数。//设置返回数组为空。

2024-01-30 23:03:39 386

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除