算法
算法题
dotJunz
这个作者很懒,什么都没留下…
展开
-
17. 电话号码的字母组合
的 ,放在参数中的写法如下。原创 2023-09-30 21:24:21 · 323 阅读 · 0 评论 -
【Java中的lowerBound】用TreeMap(TreeSet)实现C++(lowerBound)和python(bisect_left)中的二分查找
用 Java 的 TreeMap(TreeSet) 配合哨兵实现 C++(lowerBound) 和 python(bisect_left) 中的二分查找。可以通过 TreeSet 中的 lower、floor、ceiling、higher 实现C++ stl 中的 lower_bound 和 upper_bound。中对应有。原创 2023-03-26 22:16:05 · 275 阅读 · 0 评论 -
基础二分查找总结
本文对基础的二分查找算法做了总结,通过分析 lower_bound 和 upper_bound 函数给出了常用的模板,并指出了其中细节和转化关系,最后通过力扣相关题目巩固所学知识。原创 2023-01-17 14:00:51 · 494 阅读 · 0 评论 -
DFS与回溯的区别——以力扣《694.不同的岛屿数量》为例
对于最后一题不同的岛屿数量,最后提到,下面谈一谈我的理解。原创 2022-12-19 09:45:58 · 176 阅读 · 0 评论 -
【力扣】787. K 站中转内最便宜的航班加权——有向图最短路径
我感觉这题比较有代表性,所以记录一下,这题是加权有向图中求最短路径的问题。原创 2022-11-24 14:29:46 · 517 阅读 · 0 评论 -
【Java刷题】初始化List应该选择ArrayList还是LinkedList
结论:刷题的时候首选ArrayList。遇到add(int index, E element)和remove(int index)操作频繁的时候,再改用LinkList。原创 2022-11-13 16:47:29 · 837 阅读 · 0 评论 -
力扣——剑指 Offer II 092. 翻转字符
不管是不是动态规划问题,首先写出递归的暴力解。如果超时,考虑有没有重叠子问题,此时就要注意递归函数的定义,递归函数的返回值应该是子问题的解。可能一开始结果保存在函数参数中是比较好想的。如果一开始写的递归函数是结果在函数参数里的形式,要考虑将结果定义在返回值中,此时需要明确递归函数的定义。原创 2022-10-31 11:15:02 · 178 阅读 · 0 评论 -
CSDN竞赛-第七期
CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/17。原创 2022-10-19 08:11:15 · 291 阅读 · 1 评论 -
力扣二叉树调试工具类——根据力扣数组输入形式的二叉树构造真正的二叉树
之前在力扣刷二叉树类型的题目时,经常会遇到bug,代码的结果和自己的预期不符,此时想到本地调试,却要先构造一个二叉树作为输入。之前一直用的笨方法,就是一个个new节点,然后把指针连起来。如果运气不好,这棵树运行成功了,又卡在另一棵树上,又要重新构造一棵树,很麻烦,导致我想放弃调试了。在网上也没有找到相关的转换代码,正好前几天做到二叉树的序列化与反序列化这道题,发现刚好和这个需求匹配。原创 2022-09-18 10:54:51 · 670 阅读 · 0 评论 -
力扣——2400. 恰好移动 k 步到达某一位置的方法数目
上述代码可以解决示例1,对于规模大一点的例子就超时,说明思路是对的,接下来就是优化了,自然的想法就是加个备忘录,那就要考虑是否存在重叠子问题。注意:由于坐标可能是负值,所以可以用 startPos + 偏移 来防止数组索引为负值。在上图中,当前的坐标和剩余 k 步就是问题的状态,因此加一个二维数组备忘录 memo。观察上面示例,容易画出下面的递归树,因此可以考虑DFS。对于示例1,下图展示了存在的重叠子问题。很容易写出DFS的代码。原创 2022-09-16 09:40:26 · 264 阅读 · 0 评论 -
力扣——2401. 最长优雅子数组
暴力方法是循环窗口内的数一一比较,这样方法效率较低,可以考虑位运算。如何判断新来的数与窗口内的数按位与运算都为0?使用一个int类型sum。原创 2022-09-16 09:11:52 · 283 阅读 · 0 评论 -
二叉树的序列化与反序列化
二叉树的序列化是指将二叉树转化成一个字符串,便于存储或者通过网络传输。反序列化就是将字符串通过相同的规则转化成二叉树。序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。题目297. 二叉树的序列化与反序列化。原创 2022-09-15 11:18:46 · 282 阅读 · 0 评论 -
反转链表I和II(迭代和递归)
反转链表I和II(迭代和递归)原创 2022-08-30 11:48:11 · 228 阅读 · 0 评论 -
需要一点公式变换的题(脑筋急转弯类型)
需要一点公式变换的题(脑筋急转弯类型)原创 2022-08-22 15:25:54 · 198 阅读 · 0 评论 -
Java long类型转换易犯的错误
Java long类型转换易犯的错误原创 2022-08-22 15:11:08 · 763 阅读 · 0 评论 -
LRU 缓存
LRU 缓存用自带的 LinkedHashMap 实现自己实现哈希链表原创 2022-08-22 10:00:19 · 709 阅读 · 0 评论 -
力扣nSum问题模板
力扣nSum问题模板原创 2022-08-19 11:19:05 · 83 阅读 · 0 评论 -
LeetCode股票问题通用模板
LeetCode股票问题通用模板原创 2022-08-18 10:08:11 · 150 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法原创 2022-06-24 10:29:24 · 105 阅读 · 0 评论 -
蓝桥杯 2020 第8题:子串分值
题目题目描述对于一个字符串S,我们定义S 的分值 f(S) 为S中恰好出现一次的字符个数。例如f (”aba”) = 1,f (”abc”) = 3, f (”aaa”) = 0。现在给定一个字符串S[0…n-1](长度为n),请你计算对于所有S的非空子串S[i…j](0 ≤ i ≤ j < n), f (S[i… j]) 的和是多少。【输入格式】输入一行包含一个由小写字母组成的字符串S。【输出格式】输出一个整数表示答案。【样例输入】ababc【样例输出】21【样例说明】子串原创 2021-03-15 15:43:00 · 1394 阅读 · 2 评论 -
蓝桥杯 2020 第6题:成绩统计
题目题目描述小蓝给学生们组织了一场考试,卷面总分为100 分,每个学生的得分都是一个0 到100 的整数。请计算这次考试的最高分、最低分和平均分。【输入格式】输入的第一行包含一个整数n,表示考试人数。接下来n 行,每行包含一个0 至100 的整数,表示一个学生的得分。【输出格式】输出三行。第一行包含一个整数,表示最高分。第二行包含一个整数,表示最低分。第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。【样例输入】780925674889910【样例输出】99原创 2021-03-14 10:35:57 · 2079 阅读 · 0 评论 -
蓝桥杯 2020 第3题:蛇形填数
题目代码#include <iostream>using namespace std;const int n = 20;int main(){ int sum = n + n; int num = sum - 1; int ans = 0; for(int i = 1; i < num; i++){ ans += i; } ans += n; cout << ans << e原创 2021-03-14 09:21:19 · 138 阅读 · 0 评论 -
蓝桥杯 2020 第1题:门牌制作
题目试题A 门牌制作本题总分:5 分【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有2020 位住户,门牌号从1 到2020 编号。小蓝制作门牌的方法是先制作0 到9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017 需要依次粘贴字符1、0、1、7,即需要1 个字符0,2 个字符1,1 个字符7。请问要制作所有的1 到2020 号门牌,总共需要多少个字符2?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,原创 2021-03-13 22:16:24 · 434 阅读 · 0 评论 -
蓝桥杯 2020 第7题:回文日期
题目题目描述2020 年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按“yyyymmdd” 的格式写成一个8 位数是20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示20200202 是“千年一遇” 的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:20211202 即2021年12月2日。也有人表示20200202 并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约100 年后就能遇原创 2021-03-14 11:14:07 · 1667 阅读 · 1 评论 -
蓝桥杯 2020 第一场 第2题:合并检测
题目第二题:合并检测题目描述新冠疫情由新冠病毒引起,最近在A国蔓延,为了尽快控制疫情,A国准备给大量民众进病毒核酸检测。然而,用于检测的试剂盒紧缺。 为了解决这一困难,科学家想了一个办法:合并检测。即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这k个人都是阴性,用一个试剂盒完成了 k 个人的检测。如果结果为阳性,则说明 至少有一个人为阳性,需要将这 k 个人的样本全部重新独立检测(从理论上看, 如果检测前 k−1 个人都是阴性可以推断出第 k 个人是阳性,但是在实际转载 2021-04-05 17:07:50 · 604 阅读 · 0 评论 -
蓝桥杯 2020 第一场 第1题:跑步训练
题目题目描述小明要做一个跑步训练。 初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗600的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达0,他就停止锻炼。 请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。 答案中只填写数,不填写单位。代码#include <iostream>using namespace s原创 2021-03-15 16:09:26 · 954 阅读 · 0 评论 -
蓝桥杯 2020 第一场 第6题:解码
题目题目描述小明有一串很长的英文字母,可能包含大写和小写。在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。 例如,连续的5个a,即aaaaa,小明可以简写成a5(也可能简写成 a4a、 aa3a 等)。对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。为了方便表达,小明不会将连续的超过9个相同的字符写成简写的形式。现在给出简写后的字符串,请帮助小明还原成原来的串。代码#include <i原创 2021-04-17 21:44:30 · 731 阅读 · 1 评论 -
蓝桥杯 2020 第一场 第3题:分配口罩
题目问题描述某市市长获得了若干批口罩,给定每批口罩的数量,每一批口罩的数目如下:9090400 8499400 5926800 8547000 4958200 4422600 57512004175600 6309600 5865200 6604400 4635000 10663400 8087200 4554000市长要把口罩分配给市内的 2 所医院,由于物流限制,每一批口罩只能全部分配给其中一家医院。市长希望 2 所医院获得的口罩总数之差越小越好。 请你计算这个差最小是多少?答案提转载 2021-04-05 20:20:52 · 819 阅读 · 0 评论 -
蓝桥杯 2020 第一场 第7题:走方格
题目题目描述在平面上有一些二维的点阵。这些点的编号就像二维数组的编号一样,从上到下依次为第1至第n行, 从左到右依次为第1至第m列,每一个点可以用行号和列号来表示。 现在有个人站在第1行第1列,要走到第n行第m列。只能向右或者向下走。注意,如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。代码#include <iostream>using namespace std;const int maxn = 1e4;int vis[maxn][maxn];int a原创 2021-04-17 21:15:40 · 142 阅读 · 0 评论 -
蓝桥杯 2020 第一场 第4题:矩阵
题目第四题:矩阵题目描述把1∼2020放在2×1010的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案?答案很大,你只需要给出方案数除以2020的余数即可。思路利用动态规划dp[i][j]:第一行有 i 个数字,第二行有 j 个数字的方案数量;代码#include <iostream>#include <cmath>using namespace std;int dp[1020][1020];int main(){ d转载 2021-04-05 20:47:09 · 3310 阅读 · 0 评论 -
蓝桥杯 2019 第2题:数列求值
题目第二题:数列求值题目描述给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求第 20190324 项的最后 4 位数字。代码#include <iostream>using namespace std;const int MAX = 20190324+10;long long a[MAX];int main(){ a[1] = 1; a[2] = 1; a[3] = 1; for原创 2021-03-18 16:10:35 · 929 阅读 · 1 评论 -
蓝桥杯 2019 第1题:平方和
题目第一题:平方和题目描述小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。注意,平方和是指将每个数分别平方后求和。请问,在 1 到 2019 中,所有这样的数的平方和是多少?代码#include <iostream>#include <string>using namespace std;const int n = 2019;原创 2021-03-18 15:55:43 · 286 阅读 · 0 评论 -
蓝桥杯 2019 试题 8: 修改数组
题目试题 H: 修改数组时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分【问题描述】给定一个长度为 N 的数组 A = [A1, A2, · · · AN],数组中有可能有重复出现的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改A2, A3, · · · , AN。当修改 Ai 时,小明会检查 Ai 是否在 A1 ∼ Ai−1 中出现过。如果出现过,则小明会给 Ai 加上 1 ;如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1 ,直到原创 2021-04-04 22:17:27 · 161 阅读 · 0 评论 -
蓝桥杯 2019 第6题
#include <iostream>#include <cmath>using namespace std;typedef long long ll;const int maxn = 1e5+10;int a[maxn];int f(int x){ int n = x - 1; return pow(2,n);}int main(){ int n; cin >> n; for(int i = 1; i <原创 2021-04-14 17:10:43 · 74 阅读 · 0 评论 -
蓝桥杯 2019 第4题:迷宫
题目题目描述下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步原创 2021-03-21 21:00:18 · 203 阅读 · 0 评论 -
蓝桥杯 2018 第2题
题目标题:星期一整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字。代码#include <iostream>using namespace std;int month[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };bool isLeap(int y) { return (y % 4原创 2021-03-13 20:33:23 · 78 阅读 · 0 评论 -
蓝桥杯 2018 第4题
蓝桥杯 2018 第4题标题:第几个幸运数到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505原创 2021-03-09 22:05:35 · 123 阅读 · 0 评论 -
蓝桥杯 2018 第1题
题目标题:分数1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。类似:3/2当然,这只是加了前2项而已。分子分母要求互质。注意:需要提交的是已经约分过的分数,中间任何位置不能含有空格。请不要填写任何多余的文字或符号。代码#include <iostream>using namespace std;int main() { int n = 20; int f原创 2021-03-13 17:05:54 · 105 阅读 · 0 评论 -
蓝桥杯 2018 第3题
题目标题:乘积尾零如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零?5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 1486 5722 3135 1170 4014 5510 5120 729 2880 9019 2049 6原创 2021-03-13 20:49:31 · 76 阅读 · 0 评论 -
蓝桥杯 2018 第4题
题目标题:第几个幸运数到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。原创 2021-03-13 21:47:35 · 151 阅读 · 0 评论