自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法:背包问题及其应用

以上两道题,除了遍历顺序之外可以说基本一样,深究思考:1.这两道题虽然说是完全背包问题,但其实是变式,具体是通过完全背包思路去解决计数问题2.题目一只需求组合的计数结果,对其顺序的先后并无要求(同样的元素只需要一组),题目二需求组合的计数结果,对其顺序的先后有要求(同样的元素,不同的顺序算多组)于是根据以上两点,完全背包在求组合的时候,如果题目要求的是组合数,那么需要先遍历物品再遍历背包容量,而要求的是排列数,那么就需要先遍历背包的容量再去遍历物品。

2025-05-09 00:04:21 670

原创 算法理解篇二:动态规划(Dynamic Programming)

动态规划的主要思想简单介绍是一种的扩展,但与普通的分治法不同,它,避免重复计算。:将复杂问题分解为更小的子问题,通过递推或记忆化存储来高效求解。动态规划的主要思想问题的最优解可以由其子问题的最优解组合而成。例如,在最短路径问题中,从A到C的最短路径 = A→B的最短路径 + B→C的最短路径。问题可以分解为多个重复的子问题。例如,计算斐波那契数列时,fib(5)需要计算fib(4)和fib(3),而fib(4)又需要计算fib(3)和fib(2),导致fib(3)被重复计算。

2025-04-09 11:20:53 997

原创 算法理解篇一:滑动窗口(Sliding Window)

简单介绍是一种在数组或字符串上处理的有效算法.它通过维护一个窗口(通常由两个指针表示)来遍历数组或字符串,从而高效的解决问题.主要思想滑动窗口的核心思想是通过(左边界和有边界)来动态地处理数组或字符串中的连续子集.窗口可以是固定大小,也可以是可变大小.窗口大小固定,移动时只需移动窗口的左右边界.窗口大小根据条件动态调整,通常通过移动左边界或右边界来满足特定条件.代码逻辑:定义窗口的左右边界(通常是两个指针left和right),以及一些辅助变量(如最大值、最小值、哈希表等).通过移动右边界。

2025-03-27 00:33:15 859

原创 力扣算法题:串联所有单词的子串

思路: 1.创建一个map,将字符串数组中的元素放入到map中 2.外层循环控制开始的索引,创建一个用于比较的新map:seen 3.内层循环通过条件控制循环的次数与字符串数组的元素相同,通过对新map:seen的添加和索引 j 的增加来比较确定是否符合条件 原因之一:内层循环中对 seen 的更新和检查的操作频繁 思考与理解: 官方的解法关键是在于对 differ 的更新,在前两次循环之后,differ 中所包

2025-03-25 21:43:10 248

原创 算法:递归的理解(斐波那契与汉诺塔)

return 1;

2024-11-19 12:41:40 1424

原创 算法:二分查找

2.在数组中没有被找数的时候,由于 j = m - 1的原因,j索引最终会停留在比被找数小的数的索引上,i与j索引最终会比j索引大1,返回的i也即就是比被找值大的最左边的索引。1.在有被找数时,由于I = m + 1的原因,i索引最终会停留在比被找值大的最左边的索引,j索引最终会比i索引小1,此时返回i-1即就是与所找数相同的最右边的索引。1.在数组中有被找数的时候,由于 j = m - 1的原因,j索引最终会停留在与被找数相同的数的最左边,i与j索引最终会相等,返回的i也即就是最左边的索引。

2024-11-06 21:00:52 248

原创 Java后端开发常见异常及其解决方式

解决方法:以上报错表示的是 SpringEL表达式 出现了问题,这种问题一般是属性名与页面中需要传输的名不一样导致,需要去修改页面中的名字;解决方法:如果出现以上的错误,可能是html页面中传递的名字错了,即可能是 " name="goodsId" "中的goodsId有错误造成的,如果修改之后还是错误,也可能页面传递的时候名字不对应。解决方法:轮播图没有显示,将查询到的信息输出,发现只有id有值,这是 model 文件中的字段名与数据库中的字段名不一样造成的,如果是数据名错误修改数据名。

2024-10-14 21:04:55 636

原创 分发糖果思想总结

如上,之所以取最大的值,是需要把两次遍历的结果结合起来,因为分高意味着糖果多,如果取最小值,那便失去的是左边与右边遍历的递增结果,而需要的却正好是这个递增的结果.第二次遍历:从右往左,目的是让所有评分比右边大的同学所获得的糖果数量呈递增的结果,不是的,赋值为1.对于取最大值相加,我的理解这样,对于例子:[1,2,3,4,3,4,2];最后,将两次的结果取最大值,相加,即可得到结果.从左往右的结果是:[1,2,3,4,1,2,1]从右往左的结果是:[1,1,1,2,1,2,1]

2024-10-14 20:53:27 200

原创 接雨水代码总结:

同理,遍历右边的时候,最大值右边的都是有效的,而左边的都是无效的,而在第三次遍历的时候取最小的减去水柱的高度,就像是减去水槽的两边得到取得有效的水位一样.对于第二种解法的理解,我认为最重要的点是,弹出并记录与记录最小值这一个操作,因为弹出的操作,可以想象成一个形成水槽的过程,进入while循环的一定是比top值大的,弹出的那一个值就像是挖了一个坑,去计算那个坑的储水量一样.#力扣官方代码总结与感想#第一种解法:动态规划。

2024-09-24 21:12:11 642

空空如也

空空如也

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

TA关注的人

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