基础算法
文章平均质量分 88
wyqxii
这个作者很懒,什么都没留下…
展开
-
DFS-树的重心题解
重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。题目要求我们找到树的重心,输出删除这个重心后,剩余各个连通块中,结点数的最大值。因此,我们可以通过遍历树中的每一个结点,求出删除该节点后,各个连通块中的结点数。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。输出一个整数 m,表示将重心删除后,剩余各个连通块中点数的最大值。因此,树的重心问题,可以转化为求子树的结点个数问题。第一行包含整数 n ,表示树的结点数。原创 2024-03-08 22:38:43 · 1303 阅读 · 1 评论 -
C++高精度(加减乘除)
对两个的数进行计算时,int、long long等数据类型的数据范围显然不够使用时,我们就需要引入。高精度算法本质上时用字符串模拟数字进行计算。其步骤与人工演算过程一致。原创 2023-07-28 00:45:50 · 3058 阅读 · 1 评论 -
二分法(整数二分/实数二分,二分答案/二分查找)
也就是在单调递增序列中。原创 2023-07-27 17:38:38 · 2464 阅读 · 1 评论 -
快速排序、归并排序
快速排序和归并排序的主要思想:分治分治法的三个步骤:分解,解决,合并;我们将用分治思想设计排序算法:把原本无序的数列分为两部分,对每部分,继续分解成更小的两部分……在快速排序中,是把序列分为左右两部分,左部分的元素都小于右部分的元素,快速排列的核心操作是分解;在归并排序中,是把序列简单的分为两半。:分解到最后无法分解时,进行排序:把每一次分开的两部分合并到一起。归并排序的核心操作是合并。快速排列并不需要合并过程,因为在分解过程中,左右部分就已经是有序的了。原创 2023-07-24 15:03:34 · 52 阅读 · 0 评论 -
数组元素的目标和(双指针解法)
给定两个升序排序的有序数组 A和 B,以及一个目标值 x。//定义数组A[],B[]数组下标从 0 开始。请你求出满足 A[i]+B[j]=x 的数对 (i,j)。//设指针i和指针j,分别指向数组A和数组B数据保证有唯一解。//由于数据有唯一解,且数组A,B都为有序数组,若i和j一开始都指向数组首元素(即两个数组的最小值),则在最坏的情况下,时间复杂度为O(n^2),也就是暴力法,容易超时;//所以我们考虑i指向A的首元素,j指向B的末尾,即从A的最小值和B的最大值开始遍历。原创 2023-07-09 18:14:41 · 62 阅读 · 3 评论