acwing算法基础课笔记
文章平均质量分 74
zhsnddn
这个作者很懒,什么都没留下…
展开
-
【java】浅谈双指针
双指针 思路及其实现 双指针就是在一个循环里有两个变量同时向前推进,循环结束条件可以是一个或多个(只要不是死循环就可)。一般模型为i(第一个指针,以下同),j(第二个指针,以下同)。第一种模型为一个数组(i从首位开始,j从末尾开始)第二种模型为二个数组(i从第一个数组首位开始,j从第二个数组尾部出发),第三钟为两个数组(i从第一个数组首位开始,j从第二个数组首位开始) 双指针一般都是两层循环优化而来,特别注意的是看我们不要的是否有用,才能确定是否使用双指针。 最长连续不重复子序列 给定一个长度为 n 的整原创 2022-05-06 21:38:41 · 587 阅读 · 0 评论 -
【Java】浅谈前缀和与差分
前缀和 思路及其实现 前缀和,顾名思义,就是求出一个序列中每个数的前面的数和自身相加。下面的s数组表示前缀和,a数组表示当前数 s[i] = a[1] + a[2] + ... + a[i - 1] + a[i]; s[i - 1] = a[1] + a[2] + ... + a[i - 2] + a[i - 1]; 由此可以得出: s[i] = s[i - 1] + a[i]; 现在对其边界进行判断,当i == 1的时候 s[1] = s[0] + a[1]; a[0] = 0; 所以可以判断等式成 作原创 2022-05-01 21:58:13 · 387 阅读 · 0 评论 -
【Java】浅谈二分
整数二分 思路及其作用 整数二分就是在一个数组中, 不断取其中间值,改变左右边界,使左右边界重合,从而取出满足预期结果。 使用二分得前提就是必须这个数组具有二义性(也就是由某一个数分开, 左面全部满足条件,而右面全部不满足,这种情况下就可以用二分来求解满足条件得值,作用就是在nlogn得复杂度情况下求解,对程序进行优化。 数的范围 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。 如果数组中不存在该元素,则返回原创 2022-04-29 16:44:33 · 163 阅读 · 0 评论 -
【Java】浅谈排序
快速排序 思路及其作用 快排就是在数列中随便选择一个数, 经过操作让左面的数小于这个数, 右面的数大于这个数时间复杂度(在一般情况下是O(nlogn), 在特殊情况下为O(n^2)。快排的作用是排序,而Java中Arrays.sort而也是排序,且复杂度稳定为nlogn,那应该在什么情况下使用?快排的特点就是让我们可以有操作内部的空间,从而利用其部分规律的特点用更少的复杂度完成题目,列如:第k个数 acwing785快速排序 给定你一个长度为 n的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。原创 2022-04-28 19:07:36 · 125 阅读 · 0 评论