五月集训
文章平均质量分 70
这是《五月集训》的汇总专栏
野生的小小风256
这个作者很懒,什么都没留下…
展开
-
《五月集训》第一天学习报告
前言今日继续学习 markdown 的使用方法,进行第一天的训练。今日的训练内容是: 数组今日的一些所得判断一个 for() 循环是否出现过 break 可以额外添加一个变量,在break前对其进行处理,然后在循环外判断一下变量是否被处理过即可。当然还有另一种方式可以判断:直接判断控制循环的参数是否超出循环的边界,只要是在循环中出现了break,控制循环的变量就一定是没有出界的,因此也可以依次来判断是否出现过break.学习了哈希表的基本原理解题报告1.力扣2016原题链接https:原创 2022-05-01 16:11:32 · 93 阅读 · 0 评论 -
《五月集训》第二日——字符串
前言这是五月集训打卡的第二天,今日的训练内容是 字符串 由于有很多还没有学习到的东西,今天的题目很多是根据题解来写的,因此今天的题目主要是以分析源代码的形式。解题报告1.力扣500原题链接https://leetcode-cn.com/problems/keyboard-row/题目概述给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 “qwertyuiop” 组成。第二行由字符 “asdfghjkl”原创 2022-05-02 16:08:38 · 194 阅读 · 0 评论 -
《五日集训》第三日——排序
前言今日是五日集训的第三天,今日的训练内容是——排序。解题报告1.力扣977原题链接https://leetcode-cn.com/problems/squares-of-a-sorted-array/题目概述给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解题思路这题比较简单,直接构造新的数组把原数组元素平方后放入,随后再利用库函数qsort()排序后返回即可。源码剖析/** * Note: The return原创 2022-05-03 18:36:46 · 73 阅读 · 0 评论 -
《五月集训》第四日——贪心算法
前言这是五月集训的第四天,今天的训练内容是 贪心算法解题报告1.力扣1221原题链接https://leetcode-cn.com/problems/split-a-string-in-balanced-strings/题目概述在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串,且分割得到的平衡字符串是原平衡字符串的连续子串。返回可以通过分割得到的平衡字符串的 最大数量原创 2022-05-04 09:58:30 · 157 阅读 · 0 评论 -
《五日集训》第五日——双指针
前言这是五月集训的第五天,今日的训练内容是 双指针解题报告1.力扣917原题链接https://leetcode-cn.com/problems/reverse-only-letters/题目概述给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。返回反转后的 s 。解题思路定义两个指针,直接从两头开始往中间走,每次当某个指针指向了字母的时候就让这个指针停下,直到两个指针都停下的时候再交换两个字母的值,直到两个指针相遇为原创 2022-05-05 23:00:42 · 86 阅读 · 0 评论 -
《五月集训》第六日——滑动窗口
前言这是五月集训的第六天,今日的内容是 滑动窗口解题报告1.力扣1984原题链接https://leetcode-cn.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores/题目概述给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。原创 2022-05-06 23:35:35 · 332 阅读 · 0 评论 -
《五月集训》第七日——哈希表
前言这是五月集训的第七日,今日的训练内容是 哈希表解题报告1.力扣1512原题链接https://leetcode-cn.com/problems/number-of-good-pairs/题目概述给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。解题思路好数对的个数直接和每个数出现的次数挂钩,其实可以只去记录每一个数前面有多少的数字与之相同就可以了,每个数都可原创 2022-05-07 22:30:56 · 562 阅读 · 0 评论 -
《五月集训》第八日——前缀和
前言这是五月集训的第日,今日的训练内容是 前缀和解题报告1.力扣1480原题链接https://leetcode-cn.com/problems/running-sum-of-1d-array/题目概述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。解题思路为需要返回的数组进行内存申请,然后数组 ret[] 的每一项其实都等于 nums[] 中的当前项加上数组 ret[] 的原创 2022-05-08 17:56:42 · 191 阅读 · 0 评论 -
《五月集训》第九日——二分查找
前言这是五月集训的第9日,今日的训练内容是 二分查找二分查找的概述二分查找顾名思义,就是使用二分法的方式来寻找一个 有序 数组中的某一个 target 的方法。这样就成功的把时间复杂度从 n 降低到了 logn 。它的写法可以参考如下:给一个有序数组和一个值target,查找有无这个值,如果没有就返回 -1。int search(int* nums, int numsSize, int target){ int l=0,r=numsSize-1; //(1)原创 2022-05-09 21:49:21 · 478 阅读 · 0 评论 -
《五月集训》第十日——位运算
前言这是五月集训的第十日,今日的训练内容是 位运算解题报告1.力扣191原题链接https://leetcode.cn/problems/number-of-1-bits/题目概述编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。解题思路使用一个循环不断用 1 位与上数字的最后一位,如果是 1 就累积到计数器上,然后不断的使得这个数右移直到其值为 0 即可。源码剖析int hammingWeight(uint原创 2022-05-10 22:10:04 · 219 阅读 · 0 评论 -
《五月集训》第十一日——矩阵
前言这是五月集训的第十一日,今日的训练内容是 矩阵解题报告1.力扣1351原题链接https://leetcode.cn/problems/count-negative-numbers-in-a-sorted-matrix/题目概述给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。解题思路因为这是有序的数组,因此每一行到第一个负数就可以得到这一行的负数的个数了,然后每一行的负数个数累加返回就可以了。原创 2022-05-11 23:37:04 · 221 阅读 · 0 评论 -
《五月集训》第十二日——链表
前言这是五月集训的第十二日,今日的训练内容是 链表解题报告1.力扣1290原题链接https://leetcode.cn/problems/convert-binary-number-in-a-linked-list-to-integer/题目概述给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。解题思路使用二进制的定义(其实就类似与十进制)比如需要把一串字符串 54321 转化为十进制数,可以使用一个小循环每原创 2022-05-12 21:50:01 · 227 阅读 · 0 评论 -
《五月集训》第十三日——双向链表
前言这是五月集训的第十三日,今日的训练内容是 双向链表今日记录四题,争取下个月能做出来一两道1.力扣1472原题链接https://leetcode.cn/problems/design-browser-history/2.力扣430原题链接https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/3.力扣剑指offer028原题链接https://leetcode.cn/problems/Qv1Da2/原创 2022-05-13 21:51:24 · 149 阅读 · 0 评论 -
《五月集训》第十四日——栈
前言这是五月集训的第十四日,今日的训练内容是 栈解题报告1.力扣1441原题链接1441. 用栈操作构建数组题目概述给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。请使用下述操作来构建目标数组 target :Push:从 list 中读取一个新元素, 并将其推入数组中。Pop:删除数组中的最后一个元素。如果目标数组构建完成,就停止读取更多元素。题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的原创 2022-05-14 21:31:00 · 225 阅读 · 1 评论 -
《五月集训》第十五日——广度优先搜索
前言这是五月集训的第十五日,今日的训练内容是 广度优先搜索解题报告1.力扣565原题链接565. 数组嵌套题目概述索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], … }且遵守以下的规则。假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]… 以此类推,不断添加直到S出现重复的元素。解题思路使用题目所给的方式对数原创 2022-05-15 22:36:45 · 218 阅读 · 0 评论 -
《五月集训》第十六日——队列
前言这是五月集训的第十六日,今日的训练内容是 队列队列的笔记今日学习的内容是队列,队列其实就是一种操作受限的线性表,只允许在一头写入数据在另一头删除数据,在《数据结构》中也学习过相关的内容,但实际上去上机写代码还没有过,因此今日将记录一下链式存储结构的队列的构建、插入结点、删除结点等操作的代码,并把个人的理解等记录在注释中,也方便日后的复习(也方便写题的时候当c++的对象用(x))typedef struct{ //定义结点原创 2022-05-16 21:23:58 · 325 阅读 · 0 评论 -
《五月集训》第十七天——广度优先搜索
前言这是五月集训的第十七日,今日的训练内容是 广度优先搜索解题报告1.力扣LCP44原题链接LCP 44. 开幕式焰火题目概述「力扣挑战赛」开幕式开始了,空中绽放了一颗二叉树形的巨型焰火。给定一棵二叉树 root 代表焰火,节点值表示巨型焰火这一位置的颜色种类。请帮小扣计算巨型焰火有多少种不同的颜色。解题思路定义一个哈希表,然后定义一个函数使用广度优先搜索的方式对树进行遍历,在主函数中先将数填入哈希表,然后再遍历哈希表就可以了,至于遍历的方式将在源码剖析中写出。源码剖析/**原创 2022-05-17 22:36:01 · 374 阅读 · 0 评论 -
《五月集训》第十八日——树
前言这是五月集训的第十八日,今日的训练内容是 树解题报告1.力扣2236原题链接2236. 判断根结点是否等于子结点之和题目概述给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。如果根结点值等于两个子结点值之和,返回 true ,否则返回 false 。解题思路一行解决源码剖析/** * Definition for a binary tree node. * stru原创 2022-05-18 21:16:08 · 277 阅读 · 0 评论 -
《五月集训》第十九日——二叉树
前言这是五月集训的第十九日,今日的训练内容是 二叉树解题报告1.力扣144原题链接144. 二叉树的前序遍历题目概述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。解题思路前序遍历,填入,过啦!源码剖析void preSearch(struct TreeNode* root, int* returnSize, int *nums){ if (root) { nums[(* returnSize) ++] = root -> val;原创 2022-05-19 21:24:16 · 255 阅读 · 0 评论 -
《五月集训》第二十日——二叉搜索树
前言这是五月集训的第二十日,今日的训练内容是 二叉搜索树解题报告1.力扣700原题链接700. 二叉搜索树中的搜索题目概述给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。解题思路直接使用递归即可。源码剖析struct TreeNode* searchBST(struct Tree原创 2022-05-20 22:51:35 · 192 阅读 · 0 评论 -
《五月集训》第二十一日——堆
前言这是五月集训的第二十一日,今日的训练内容是 堆解题报告今天的题都有些太难了,只能先做记录了。1.力扣2099原题链接2099. 找到和最大的长度为 K 的子序列2.力扣1792原题链接1792. 最大平均通过率3.力扣1499原题链接1499. 满足不等式的最大值4.力扣2163原题链接2163. 删除元素后和的最小差值...原创 2022-05-21 22:39:08 · 163 阅读 · 0 评论 -
《五月集训》第二十二日——有序集合
前言这是五月集训的第二十二日,今日的训练内容是 有序集合解题报告今日也只能先记录一下题目了(悲)1.力扣1418原题链接1418. 点菜展示表2.力扣363原题链接363. 矩形区域不超过 K 的最大数值和...原创 2022-05-22 23:31:28 · 96 阅读 · 0 评论 -
《五月集训》第二十三日——字典树
前言这是五月集训的第二十三日,今日的训练内容是 字典树解题报告今日份太难了,先记录一下题目吧1.力扣211原题链接211. 添加与搜索单词 - 数据结构设计2.力扣1268原题链接1268. 搜索推荐系统3.力扣421原题链接421. 数组中两个数的最大异或值4.力扣1707原题链接1707. 与数组中元素的最大异或值...原创 2022-05-23 23:42:25 · 113 阅读 · 0 评论 -
《五月集训》第二十六日——并查集
前言这是五月集训的第二十六日,今日的训练内容是 并查集解题报告1.力扣990原题链接990. 等式方程的可满足性题目概述给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。解题思路首先先遍历所有的元原创 2022-05-26 22:33:44 · 90 阅读 · 0 评论 -
《五月集训》第二十七日——图
前言这是五月集训的第二十七日,今日的训练内容是 图解题报告1.力扣1791原题链接1791. 找出星型图的中心节点题目概述有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。解题思路一上来看原创 2022-05-27 20:31:01 · 153 阅读 · 0 评论 -
《五月集训》总结
前言一眨眼一个月也就过去了,跟着星球的进度学习了很多的东西,真的十分感谢有着这样一个环境,这样一个群体能够带着我学习。集训感想五月集训到这里也就接近尾声了,很庆幸自己能够坚持到了最后,虽然在难度比较五颜六色的那几天几乎每天都写不出来题目,但这一个月我真的学到了好多好多的东西。也收获了一个月每日一份的解题报告存在我的vscode和csdn之中,很有一种丰收的喜悦。对我来说五月集训是有着很大的意义的,接下来可能要说的东西很多很多。其实从非常早之前自己就一直对编程有着很大的兴趣,于是到了支援填报的时候首原创 2022-05-27 21:34:20 · 252 阅读 · 1 评论 -
《五月集训》第28日——动态规划
前言这是五月集训的第二十八日,今日的训练内容是 动态规划解题报告动态规划问题的解题过程一般都是以下的5个过程设计状态写出状态转移方程设定初始状态方程执行状态转移返回最终的解1.力扣70原题链接70. 爬楼梯题目概述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?解题思路一道在过去就曾经做过题目,而这一次做有了新的感悟,有了新的方法,感到非常的满意。一道看起来很简单的题目,思考的过程如下:因为每一步可以原创 2022-05-28 22:40:45 · 144 阅读 · 0 评论 -
《五月集训》第二十九日——分而治之
前言这是五月集训的第二十九日,今日的训练内容是 分而治之解题报告1.力扣21原题链接21. 合并两个有序链表题目概述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。解题思路这题我使用的思路是使用递归,最开始的思路是重新创建一个新的函数使用递归将前两个传入的链表都填入第三个链表中,但是这样出现了空指针的bug,找了一阵子没有想明白问题出在哪里,直接换思路吧。仍然是递归,这次直接使用函数本身进行递归好了。首先来考虑一下递归的出口,不论 li原创 2022-05-29 20:48:52 · 135 阅读 · 0 评论