笔记
文章平均质量分 79
云深n不知处
古之成大事者,不唯有超世之才,亦唯有坚韧不拔之志也!
展开
-
双指针算法+二进制中的lowbit
最长连续不重复子序列给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 n。第二行包含 n 个整数(均在 0∼105 范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤105输入样例:51 2 2 3 5输出样例:3这里使用的双指针算法:就是用一个一个变量j指向前面,变量i指向后面,如果没有重复的数i就一直后移,并且每次记录一下最大距离(即为不重复区间的长度).原创 2021-04-06 23:38:52 · 119 阅读 · 0 评论 -
拓扑排序
给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 (x,y)。输出格式共一行,如果存在拓扑序列,则输出任意一个合法的拓扑原创 2021-04-05 19:46:10 · 240 阅读 · 0 评论 -
2021/1/23学习总结
学习时间和内容早上8:30-8:40起床打卡签到9:00-11:00学习数据结构14:00-18:00学习二分法、刷题新学了一种浮点型的二分法,过了一道中位数二分。浮点数的二分跟整型数据的二分有些不同:浮点数二分除了更新区间和浮点数不同,还有就是二分终止条件,一般有两种写法,一种就是当前区间长度已经足够小。 比如这题需要保留六位小数,我们可以在区间长度小于1e-8时结束循环,一般区间长度比保留位数还要小两个数量级。还有一种写法,就是直接把二分迭代100次,也就是把while(r - l &g原创 2021-01-23 22:53:03 · 237 阅读 · 0 评论 -
2021-01-22学习总结
学习时间与内容8:30-8:40起床打卡9:00-11:30回顾昨天的知识点、复习希尔排序14:00-18:00 学习二分、刷题晚上整合总结希尔排序因为我们之前学过的插入排序法在小规模数据或者数据基本有序时十分高效,所以希尔排序就在这基础上进行了优化改动,它将数据进行了分组,将较大的数据集合分割成了若干个小组,然后对每一个小组分别进行插入排序。它新增了一个增量,一开始增量为n/2,然后增量不断减少,当增量减少到1,整个数组的元素就分为了一组时就相当于一个插入排序。由于希尔排序在插入时是跳原创 2021-01-22 22:02:47 · 210 阅读 · 0 评论 -
2021-01-21学习总结
学习内容与时间早上8:30-8:40起床打卡9:00-11:30 复习快排,学习数据结构的栈和队列。14:00-18:00 查找关于二分的资料,学习、理解二分晚上整合。1.队列和栈队列是一种先进先出的数据结构,而栈则是一种后进先出的数据结构。可以形象的将队列比较为一个有两个出口的巷子,而栈则为只有一个出口的巷子。队列:只允许在一端进行插入操作,在另一端进行删除操作。能够避免删除时重复对多个数据进行移动。在这里用两个变量记录队列的队首(第一个数据)和队尾(第一个数据的下一位置)。原创 2021-01-21 22:40:41 · 126 阅读 · 1 评论 -
2021-1-20学习总结
12 2原创 2021-01-20 21:38:06 · 208 阅读 · 1 评论 -
归并排序求逆序数的个数
描述在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。格式输入格式第一行输入一个整数T表示测试数据的组数(1<=T<=5)每组测试数据的每一行是一个整数N表示数列中共有N个元素(2〈=N〈=100000)随后的一行共有N个整数Ai(0<=Ai<1000000000),表示数列中的所有元素原创 2020-12-25 13:51:19 · 520 阅读 · 2 评论 -
分治法-----找最大值与最小值
在20级新生刷题组中我遇到了用分治法求最大值与最小值的算法题,初看一脸懵,深入 初步的了解中突然发现跟二分法(一次划分)有着惊人的相似,好吧qaq,其实二分法就是属于分治法的一种。首先,分治法顾名思义,即为分而治之,把一个整理的多个数据,分成多块的少个数据来处理。我们来演示:输入五个数:9 57 3 10根据首位数下标加上末尾数的下标除以2找到这组分组的中点mid,用i来表示每个分组的第一位下标,j表示每组最后一个数的下标。9 5 7 3 10i=...原创 2020-10-31 01:38:56 · 8098 阅读 · 0 评论