算法常用模板
只是当时已惘然——
android,java
展开
-
并查集(易懂)
并查集的用处: 1.判断两个元素是否在同一集合 2.合并两个集合原创 2024-01-14 21:00:26 · 410 阅读 · 1 评论 -
二分模板详解
像这里下标为2的点值为2,不满足为3,故该点肯定不可能是答案,故left=mid+1;如果我们要找第一个大于等于3的点,如果当前mid满足,那么我们就要像左继续找,但不能确定他是第一个满足这个条件,故right=mid;二分对象通常是一个有序集合,查找某一点是否存在,例如 1 2 2 3 3 4我们要找3的下标时,首先就是两个指针,一个指头,一个指尾,中间mid为0+5/2=2,下标为2的点,但2不为3,故说明值偏小,左指针右移;因为遍历到l与r相邻时,mid永远为l,会发生死循环。返回l,r下标都行。原创 2023-12-22 19:52:40 · 359 阅读 · 0 评论 -
归并排序模板
归并排序与快速排序不同的是,先将数组进行划分,到最后为1个时,就返回上层,回溯进行排序,在回溯时,通过两个指针进行操作,由于两个子数组已排好序,故子数组中左边是小于右边的,故每次将两个子数组中最小的放入另一个数组,再将值重新返回给该数组即可。有一个细节就是,在遍历完后要看看两个数组哪个还未遍历完,将其直接添加即可!原创 2023-12-22 09:43:17 · 414 阅读 · 0 评论 -
快速排序模板
采用双指针算法,递归原创 2023-12-19 20:31:17 · 465 阅读 · 1 评论 -
树状数组模板
在对一个数列求区间和时,我们通常采用前缀和来完成,但如果修改其中某值,就需要将所有后面前缀和修改,这是非常麻烦的,那么就可以用树状数组。树状数组原理大致就是将基础元素合并成越来越大的集合,修改则只需修改集合值即可,避免的具体对每个前缀操作。如果求和left到right,传入查找left应减一,因为是是[left,right]闭区间。数组中偶数位保存是一个个的和,奇数的lowbit是1,减去就变成前面偶数所包含的集合。这个函数就是求t最低位为1和其后零的十进制。若元素改变,则改变包含他的集合。原创 2023-11-13 21:06:50 · 88 阅读 · 0 评论 -
滑动窗口模板
【代码】滑动窗口模板。原创 2023-11-06 12:46:31 · 60 阅读 · 0 评论