- 博客(52)
- 资源 (3)
- 收藏
- 关注

原创 可以帮助同学们解题,或重构代码(仅限粉丝)
作为一名宠粉的博主,为了帮助同学们的代码学习,我可以帮助粉丝们解题或是重构代码。有疑问的同学们可以私信我,我一定尽全力回答你们的问题!!!要图也私我。
2021-07-14 21:44:22
115
原创 java 力扣(LeetCode) 594.最长和谐子序列
题目描述和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。解题思路:思路:1.通过hashmap存储对应元素已经出现的次数 存储过程复杂度O(N)2.遍历hashmap 遭到每个key和key+1 对应次数的总和 取出Math.max 对应复杂度O(m) m为N中不重复的数据个数3.
2021-11-20 18:56:39
261
原创 c/c++ 洛谷 P1381 单词背诵
题目描述灵梦有 nn 个单词想要背,但她想通过一篇文章中的一段来记住这些单词。文章由 m 个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了。解题思路:单调队列 map代码如下:#include<cstdio>#include<cmath>#include<algorithm>#include<cstri
2021-10-18 06:00:00
461
原创 c/c++ 力扣(LeetCode) 282.给表达式添加运算符
题目链接力扣(LeetCode) 282.给表达式添加运算符不想戳的看下图:题目描述:样例:数据范围:解题思路:回溯。记录题目要求的 target 值。注意:1、起始位置;2、0不能作为数字开头;3、用乘法时,记录中间值,更新时先把原数删掉。代码吐下:#define ll long longclass Solution {public: vector<string> ans; char op[3]={'+','-','*'};
2021-10-16 15:09:53
316
原创 c/c++ 洛谷 P1616 疯狂的采药
题目LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是 LiYuxiang,你能完成这个任务吗?此题和原题的不同点:每种草药可以无限制地疯狂采摘。
2021-10-16 14:42:14
471
原创 c/c++ 奶牛晒衣服
题目在熊大妈英明的带领下,时针和他的同伴生下了许多牛宝宝。熊大妈决定给每个宝宝都穿上可爱的婴儿装。于是,为牛宝宝洗晒衣服就成了很不爽的事情。圣人王担负起了这个重任。洗完衣服后,你就要弄干衣服。衣服在自然条件下用1的时间可以晒干A点湿度。抠门的熊大妈买了1台烘衣机。使用烘衣机可以让你用1的时间使1件衣服除开自然晒干A点湿度外,还可烘干B点湿度,但在1的时间内只能对1件衣服使用。N件的衣服因为种种原因而不一样湿,现在告诉你每件衣服的湿度,要你求出弄干所有衣服的最少时间(湿度为0为干)。解题思路:循环
2021-10-15 20:31:12
755
原创 c/c++ 洛谷 P1030 求先序遍历
题目给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8)。解题思路DFS 递归,还原树形结构代码如下:#include <iostream>using namespace std;string in_str,post_str;void build(int l1,int r1,int l2,int r2){ if(l1>r1) return; cout <<
2021-10-15 20:24:59
228
原创 求树的直径
两遍dfs过。第一遍dfs先遍历到最远点(起点),第二遍dfs遍历到另一个最远点(终点),遍历个数就是直径。代码如下:#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n,tot,t;int head[400010],vis[400010],size[400010];int ans,pos;struct node{ int to,nxt;}
2021-10-10 13:06:07
100
原创 c/c++ 洛谷 P5035 金坷垃
题目链接金坷垃题目背景@rainheavy 原创这是一道巨(du)水(liu)题第一届中国国际博览会于2018年11.5–11.10在上海举行,特朗普统治的国家——美国带来了金坷垃。这是一种神奇的产品,肥料用了金坷垃,能吸收20米以下的氮磷钾 (这是他们的广告)。可是,在经过富土(tu)康的质检员 DevZhu质检的时候发现出了点问题,金坷垃的效果并不像广告所说的那样。毕竟植物的根只能到深度为1的位置,金坷垃的效果有限。题目描述它的效果只能如下:(以20为例)20的约数(除本身)有10、5
2021-10-08 06:00:00
363
原创 c/c++ 洛谷 P2669 金币
题目链接洛谷 P2669 金币题目描述国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 n 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。请计算在前 k 天里,骑士一共获得了多少金币。解题思路用一个计数器记录天数,用cnt记下总金币数。代码如下:#in
2021-10-07 06:00:00
616
原创 c/c++ 洛谷 P1199 三国游戏 [NOIP 2010 普及组]
题目链接洛谷 P1199 三国游戏题目描述小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。在游戏中,小涵和计算机各执一方,组建各自的军队进行对战。游戏中共有 NN 位武将(NN为偶数且不小于44),任意两个武将之间有一个“默契值”,表示若此两位武将作为一对组合作战时,该组合的威力有多大。游戏开始前,所有武将都是自由的(称为自由武将,一旦某个自由武将被选中作为某方军队的一员,那么他就不再是自由武将了),换句话说,所谓的自由武将不属于任何一方。游戏开始,小涵和计算机要从自由武将中挑选武将组成
2021-10-06 13:51:38
618
原创 力扣(LeetCode) 【每日一题】 446.等差数列划分 II - 子序列 2021.8.11
题目链接:446.等差数列划分 II - 子序列不想戳的看下图示例:提示:解题思路1:动态规划(dp)在子序列I的基础上可以不连续取值。动态规划——dp[i]中存储的为字典(减小空间损耗,其中存储数组为稀疏数组)。dp[i][d] = dp[j][d] + 1, 其中j<i,dp[i][d]表示了以nums[i]结尾的能够构成子序列或伪序列(2个元素)组合个数。代码如下:class Solution { public int numberOfArithmetic
2021-08-11 13:29:22
111
原创 力扣(LeetCode) 【每日一题】 413.等差数列划分 2021.8.10
题目链接:413.等差数列划分不想戳的看下图:示例:提示:解题思路1:双指针1:先求出所有满足等差要求的最长连续子数组。2:在最长子数组中,找出所有满足要求的连续分子数组,其数量和即为所求值。代码如下:class Solution { public int numberOfArithmeticSlices(int[] nums) { int result = 0; if (nums.length < 3) { return result; } //
2021-08-10 16:19:21
102
原创 力扣(LeetCode) 【每日一题】 743.网络延迟时间 2021.8.2
题目链接:743.网络延迟时间不想戳的看下图:示例:提示:解题思路1:Dijkstra算法(邻接矩阵)1.将输入的数组转换为一个图,用邻接矩阵表示dijsktra2.使用dijsktra算法,求出到所有其他顶点的最短路径和使用dist来保存最短路径和3.求出dist里的最大值,即是答案,因为题目要求到达所有点,那么dist里最大值就是答案如果dist里有初始化的Integer.MAX_VALUE那么说明这点不可达,返回-1复杂度O(n^2)代码如下:class Solut
2021-08-10 14:32:33
235
原创 力扣(LeetCode) 【每日一题】 1337.矩阵中战斗力最弱的k行 2021.8.1
题目链接:1337.矩阵中战斗力最弱的k行不想戳的看下图:示例:提示:解题思路1:HashMap+CompareTo方法分析:我们需要按照每行1的数量对数列的索引进行从小到大排序,可以使用HashMap存储<索引,相应1的数量>,最后取出前k个key。过程:遍历每行数组,相应的信息存入map。将map对应的Entry存入ArrayList列表。排序时调用Collections.sort()方法,并重写compareTo()方法,list按照value从大到小进行排
2021-08-09 19:39:23
129
原创 力扣(LeetCode) 【每日一题】 313.超级丑数 2021.8.9
题目链接:313.超级丑数不想戳的看下图:解题思路1:用题目给的例子 [2,7,13,19] 来说。将 [2,7,13,19] 依次入堆。出堆一个数字,也就是 2。这时取到了第一个超级丑数。接着将 2 和 [2,7,13,19] 的乘积,也就是 [4,14,26,38] 依次入堆。这样就可以得到其他的丑数。每次堆都可以取到最小的,每次我们也会将最小的从堆中移除。因此取 n 次自然就是第 n 大的超级丑数了。注:堆的解法没有太大难度,唯一需要注意的是去重。比如 2 * 13 = 26,而
2021-08-09 17:02:07
125
原创 java 力扣 (LeetCode) 1846. 减小和重新排列数组后的最大元素
题目链接力扣 (LeetCode) 1846. 减小和重新排列数组后的最大元素不想戳的看下图样例数据范围解题思路:贪心算法 + 哈希表统计,不断维护增大一个max num。代码如下: public int maximumElementAfterDecrementingAndRearranging(int[] arr) { if (arr.length == 0) { return 0; } TreeMap&
2021-07-15 12:11:05
129
原创 c/c++ 洛谷 P1007 独木桥
题目链接洛谷 P1007 独木桥不想戳的看下图输入输出、样例、及数据范围解题思路:仔细考虑会发现,两个人相遇无论转不转身两个人所走的 总路程 都是一样的,那么时间也都一样,所以我们大可让两个士兵相遇后继续直走。如果这样考虑,每个士兵之间就不会有影响,代码也会简单不少。注意:有一个细节要考虑到,因为每一个士兵是同时开始走,而不是一个一个走。所以max/min(向左走所走路程,向右走所走路程)还要在减去已经过去的时间,但是这有可能为负,也就是在这之前那个士兵已将走完,所以应该加0。代码如下:
2021-07-15 12:03:28
584
原创 python 力扣(LeetCode) 1818.绝对差值和
题目链接力扣(LeetCode) 1818.绝对差值和不想戳的看下图:样例:数据范围:解题思路:二分查找后进行排序。代码如下:class Solution: def minAbsoluteSumDiff(self, nums1: List[int], nums2: List[int]) -> int: mod = 1_000_000_007 rec = sorted(nums1) sum, maxn, n = 0, 0, l
2021-07-14 21:32:56
185
原创 c/c++ 洛谷 P1003 【NOIP2011 提高组】 铺地毯
题目链接洛谷 P1003 【NOIP2011 提高组】 铺地毯不想戳的看下图:样例及解释数据范围解题思路:从后往前找地毯,找到了我就输出并返回。代码如下:#include <iostream>#include <cstring>#include <cmath>using namespace std;const int maxn = 10000;int n,x,y;int a[maxn],b[maxn],g[maxn],k[maxn];/
2021-07-14 12:52:27
750
原创 c/c++ 洛谷 P1002 【NOIP2002 普及组】 过河卒
题目链接洛谷 P1002 【NOIP2002 普及组】 过河卒不想戳的看下图输入输出,样例,及数据范围解题思路:递推出状态表达式,代码如下:#include <iostream>using namespace std;const int MAXN=25;int d[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};//八个方位,这上面的点为-1表示不能走int f[MAXN][MAXN];
2021-07-14 12:41:31
461
原创 c/c++ 洛谷 P1167 刷题
题目链接洛谷 P1167 刷题不想戳的看下图输入输出格式及样例:解题思路:将其统一为分钟,再用贪心。废话不多说,代码奉上。代码如下:#include <iostream>#include <cstdlib>#include <cstdio>#include <cmath>#include <algorithm>#define ll long longusing namespace std;long long n,a
2021-07-13 12:43:20
507
1
原创 力扣 (LeetCode) 218.天际线问题
题目链接力扣(LeetCode) 218.天际线问题不想戳的看下图:样例:数据范围:解题方法1:扫描线法代码如下(java):class Solution { // 排序规则,按照x的坐标升序排列,若x坐标相同,右端点在前 class IntCompator implements Comparator<int[]> { @Override public int compare(int[] o1, int[] o2) { // TODO Auto-gener
2021-07-13 12:32:52
467
原创 c/c++ 洛谷 P3397 地毯
题目链接洛谷 P3397 地毯不想戳的看下图样例:解题思路:一道典型的二维数组,将坐标范围内都加上一,轻松解决。代码如下:#include <bits/stdc++.h>using namespace std;const int maxn = 1010;int n,m,a[maxn][maxn];int main(){ int x1,x2,y1,y2; cin>>n>>m; for(int i=1;i<=m;i++){ cin
2021-07-12 16:59:44
391
原创 c/c++ 力扣LeetCode 274.H指数
题目链接力扣Leetcode 274.H指数不想戳的看下图解题思路根据题目的意思,找一个最大的数值t,这个数字满足在我们的数组里大于等于t的至少有t个,如果满足这个条件,t就是一个合法的数值,然后我们需要找到最大的那个t。于是我们设置外层循环为引用的次数,从1到数组元素中的最大值结束,用i表示。然后我们设置内层循环为数组元素的遍历。每次进入内层循环之前,我们都会设置一个计数器为count = 0,然后我们遍历数组,如果数组元素满足大于等于i,count就加1,然后接着对count进行判断,如果
2021-07-11 19:40:09
190
原创 c/c++ 洛谷 P1428 小鱼比可爱
题目链接洛谷 P1428 小鱼比可爱不想戳的看下图解题思路因为小鱼只能看见左边,所以此题我们使用倒序。代码如下:#include <iostream>//输入输出流 头文件using namespace std;//命名空间#define maxn 1000 //宏定义一个较大值int n,m,a[maxn],b[maxn];//初始化int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>
2021-07-10 13:09:43
1583
原创 c/c++ 洛谷 P1296 奶牛的耳语
题目链接洛谷 P1296 奶牛的耳语不想戳的看下图解题思路虽然样例中给的是有序数组,但是题目并未说明有序,所以在此处有个细节,先 sort 一遍,再进行累加。代码如下:#include <iostream> //输入输出流 头文件#include <algorithm> //因为用到了 sort ,所以加上算法头文件using namespace std; //命名空间#define maxn 100006 //宏定义一个较大值int n,m,a[maxn]
2021-07-10 12:18:41
530
原创 c/c++ 洛谷 P1590 失踪的7
题目链接洛谷 P1590 失踪的7不想戳的看下图解题思路:输入后,先给数组赋值,然后循环检测7,检测到就退出,判断是否为Pascal数。代码如下:#include<iostream> //输入输出流 头文件 using namespace std;//命名空间 #define maxn 10000 //宏定义一个较大值 int n,a,sum[maxn];//初始化 int main(){ cin>>n; for(int i=1;i<=
2021-07-09 18:06:21
552
原创 c/c++ 洛谷 P3984 高兴的津津
题目链接洛谷 P3984 高兴的津津不想戳的看下图:代码如下:#include <iostream>#include <cstdio>using namespace std;#define maxn 1000001int fuc[maxn],sum,n,t;int main(){ cin>>n>>t; for(int i=1;i<=n;++i){ cin>>fuc[i]; }
2021-07-08 21:34:52
322
原创 c/c++ 力扣LeetCode 645.错误的集合
题目链接力扣 645.错误的集合不想戳的看下图解题思路循环嵌套对于这道题,有很多种方法。首先想到的,应是循环嵌套。直接for循环两边寻找相同,并求得丢失的整数。代码就不展示了,想必大家都会写。但时间复杂度O(n2),是相当高的,对于这题的数据范围,不适合用这个方法。map我们想到,可以使用STL里面的map。代码如下:class Solution { public int[] findErrorNums(int[] nums) { int result[] = new
2021-07-05 22:21:40
283
原创 c/c++ 力扣 LeetCode 50.Pow(x,n)
题目链接力扣 50.Pow(x,n)不想戳的看下图这里,我们给出4种解法。解法一:直接返回函数值return pow(x,n);//注:pow是计算以x为底的n次方值解法二:暴力求解代码如下:class Solution {public: double myPow(double x, int n) { double result = 1; if (n < 0) x = 1 / x, n = -n; for (int i =
2021-07-03 17:23:58
273
原创 c/c++ 一维数组初步
概念:数组:在程序中可以使用下标变量,即说明这些变量的整体为数组,数组中的每个变量的数据类型是相同的。一维数组:当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。定义:一维数组的定义:在C语言中使用数组必须先进行定义。 一维数组的定义方式为:类型说明符 数组名 [常量表达式];例:int a[10];//表示int类型的数组a,有1
2021-07-03 12:10:35
206
原创 c/c++ 力扣 LeetCode 27.移除元素
题目链接力扣 27.移除元素不想戳的看下图:解题思想:遍历一遍,遇到相同的删除。代码如下:class Solution {public: int removeElement(vector<int>& nums, int val) { vector<int>::iterator it = nums.begin(); for(; it < nums.end();){ if(*it == val)
2021-07-03 12:07:31
170
原创 c/c++ 洛谷 P1046 陶陶摘苹果
题目链接洛谷 P1046 陶陶摘苹果不想戳的看下图:解题思想:将陶陶踩上板凳的高度与所有苹果的高度比较,若比苹果高,就可以摘到。代码如下:#include <iostream>using namespace std;#define maxn 11 //宏定义一个最大量,因为数组第一个是0,所以定义时最好设置大一点,避免数组越界int n, m, a[maxn], cnt;//初始化int main() { for (int i = 1; i <= 10; i+
2021-07-03 11:57:05
1828
原创 c/c++ const 常量
概念常量: 其值在程序运行的过程中不会发生改变,只能在定义常量的时候设置初始值。C++中使用const关键字来定义一个常量。对于常量,编译器会将其放在一个只读的内存区域,其值不能发生改变。使用常量的好处就在于灵活,程序中多次用到常量,修改其值时,只需要改变定义时候的常量值就可以。d. 注意: 定义函数时,如果在函数体中不需要修改形式参数的值,建议将形式参数的值设为常量(const),以防用户不小心修改了这个值,会出现错误消息。...
2021-07-02 22:16:21
138
2
原创 c/c++ 力扣LeetCode 752.打开转盘锁
题目链接:力扣 752.打开转盘锁不想戳的看下图:算法详解:普通BFS搜索时,每一层的搜索节点数量会爆炸级增加。假设每一次搜索都有 nn 个新的状态,并假设从起点到目标路径长为 mm,那就要搜索:n+n2+n3+…+n^mn+n2 +n3 +…+nm 个状态,状态数就是 n^{m+1}n m+1 数量级的。所以,此时,双向的BFS就派上用场了。原理:双向BFS是同时从起点和终点两个方向开始搜索,一旦搜索到另一个方向已经搜索过的位置(或者说出现某个状态被两个方向均访问到了),就意味着找到了一条
2021-06-25 18:22:37
207
原创 c/c++ register函数
什么是register?百度百科解释:register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中。register函数的作用使函数运行速度更快。register函数的限制1、register变量必须是能被CPU所接受的类型。这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度。不过,有些机器的寄存器也能存放浮点数。2、因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址
2021-06-25 17:23:28
3648
原创 c/c++ inline函数
什么是inline?百度百科解释:C++关键字,在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。关键字inline必须与函数定义放在一起才能使函数成为内联,仅仅将inline放在函数声明前面不起任何作用。inline是一种"用于实现的关键字",而不是一种"用于声明的关键字"。一般的,用户可以阅读函数的声明,但是看不到函数的定义。inline int Prime(int a) { if (a <= 2) { return true; } else {
2021-06-25 17:09:57
117
原创 c/c++ 洛谷 P3406 海底高铁
题目链接洛谷 P3406 海底高铁不想戳的看下图:就是简单的前缀和,只是有一些要注意的点要懂,没有太大的难度。代码如下:#include<bits/stdc++.h>using namespace std;#define maxn 100005 //根据题目数据范围,宏定义一个较大值 int n,m,p,c[maxn],p2,p1,a,b,c1;long long sum,ans;//初始化 int main(){ cin>>n>>m; if
2021-06-20 17:09:16
405
关于#DVWA#安装登录使用的问题,如何解决?
2022-12-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人