- 博客(7)
- 收藏
- 关注
原创 蓝桥杯89.路径之谜(java)
第二步:设置变量,我们需要一个int类型的N存储地图格数,两个int类型的数组north[i]和west[i]分别用来存储对应列和行的步数,一个boolean类型的二维数组visit[i][j]表示第i行第j列的情况,一个boolean类型的found用来表示某一条路径是否是所需路径,一个List类型的path用来存放路径,然和按照dfs的模板,先写终止条件,再写每一步的消耗,最后写回溯就行了。第一步:确定思路,通过题目观察,我们发现箭靶上箭的数量代表着所对应的行或者列,骑士所走的步数。
2026-01-01 09:35:28
229
原创 蓝桥杯1508.N皇后问题(java)
第二步:经过分析发现,每一行只可能存在一个皇后,此时我们假设n个皇后均在每一行的第一个位置上,那么我们按照枚举的思想去移动最后一个皇后的每一个位置都会变成一种新的摆放方式,然后移动一下倒数第二行一次又会得到n个新的摆放方式,以此类推可以不落下任何一个摆放方法。但是聪明的你发现只要有两个皇后在同一列,那由它开始衍生的所有方法都不合法,所以我们可以在确定第i个皇后位置的时候就进行校验,只在与前一次相比合法的位置摆放就可以避免这个问题,最后记录结果,输出结果。
2026-01-01 09:13:45
148
原创 LeetCode 740.删除并获得点数(Java)
我们先简单分析一下,这个给出的数组nums的每个数字的顺序貌似和题目要求输出的答案是无关的,比如[4,3,2] 和[2,3,4] 最后的结果都是 6,那是因为只要任意选择了某一个数字,其他所有的相同的数字都会变成点数一起删掉,那既然发现了这个特性,该怎么去使用呢,这时候聪明的我们立马就想到了,我们先把所有元素从小到大排序,然后直接把所有相同的数加起来变成最后的点数就OK了,比如示例二[2,2,3,3,3,4]我们就可以变成[4,9,4],这样在我们获取点数的时候就可以直接相加,省去部分步骤了。
2025-09-23 19:53:01
374
原创 贪心算法 排队打水问题 (Java)
假设有ABCD四个人,两个水龙头,总时间 = A的时间 + B的时间 + C的时间 + D的时间,而不是看谁最晚结束的时间。在最少的时候这种情况下,抽象到整个问题,第一次打水的r个人不需要排队,所以总时间就是他们的和,从第r+1个人开始就需要排队,排队时间就是前面的人的打水时间,这一个人的打水总时间即 T[i] + T[i-r] ,最后再把所有人的时间加到一起就是答案了。可以看出如果先让打水时间少的人打水,那么后面的人排队的时间就会变少,即让所有人的打水时间从小到大排个序,再进行打水就是最少的时候。
2025-09-19 22:23:22
402
原创 Leetcode 198.打家劫舍(Java)
5. 当 n==4 的时候,我们会发现如果还按照之前的枚举思路往后推,这个问题就开始变得特别复杂起来了,那么假设我们现在站在第 4 间房子面前,我们有两个选择,偷第 4 间或者是不偷第 4 间,如果偷第 4 间房子,那么我们前 4 间房子的最大收益 f(4) 就是前两间房子的最大收益f (2) +第4间房子的收益;这个时候我们抽象到第i间房子,我们依旧是两个选择,如果我们偷了第i间房子,那么我们现在的最大收益就是前i-2个房子的最大收益+第i间房子的收益;那么此时前一间房子的最大收益为 f(1)
2025-09-19 20:57:05
253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅