滑动窗口 - Sliding Window Algorithm
思路 滑动窗口算法的思路十分简单,就是维护一个固定大小的窗口,然后在遍历数据的过程中不断调整窗口的大小,同时动态更新所需要计算的结果。 通常来说,滑动窗口算法应用于解决数组或列表中的连续子串或子数组问题,比如最长子串、最小子串、最长子数组、最小子数组等等。 滑动窗口算法的具体实现需要用到两个指针,即left和right指针,它们的范围初始时固定为数据的开始位置。然后,程序会尝试通过移动...
思路 滑动窗口算法的思路十分简单,就是维护一个固定大小的窗口,然后在遍历数据的过程中不断调整窗口的大小,同时动态更新所需要计算的结果。 通常来说,滑动窗口算法应用于解决数组或列表中的连续子串或子数组问题,比如最长子串、最小子串、最长子数组、最小子数组等等。 滑动窗口算法的具体实现需要用到两个指针,即left和right指针,它们的范围初始时固定为数据的开始位置。然后,程序会尝试通过移动...
顾名思义,转换器就是将A类型的对象转换为B类型的对象。 在Spring中,很多地方都会用到转换器,比如在SpringMVC中,将请求参数转换为Controller中的方法参数,将方法返回值转换为响应体,还有很多小地方。 (2023 05 08 更新,在使用消息队列中间件的时候,其也会自动使用spring中已经注册的消息转换器,将传递的原生JavaObject对象进行转换) ,当然最流行的做...
顾名思义,DevTools 为 Spring 开发人员提供了一些方便的开发同步工具。其中包含: 当代码更改时自动重启应用程序 当以浏览器为目标的资源(如模板、JavaScript、样式表等)发生变化时,浏览器会自动刷新 自动禁用模板缓存 如果 H2 数据库正在使用,则在 H2 控制台中构建 一般来说,使用SpringInitializer生成的DevTools的pom...
算法题中的二分查找技巧往往是作为一种通用的技巧出现,毕竟其本质就是让每次search之后能筛掉一半的数据。 一个小坑: 二分边界搜索 并不等同于 寻找最接近的元素 658. 找到 K 个最接近的元素 找到最接近的元素后,以该元素为中心,双指针扩散添加元素直至有k个之后即可。 思路说起来很简单,但注意实现的一些细节。 例如找到接近的元素这一操作的实现,如果元素本身就存在,那么直接二分...
二分查找的思想很简单,但是在细节上需要细心地处理。 二分查找 一个简单的二分查找框架如下: int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(left <= right) { int mid ...
What 差分数组技巧可以算是前缀和技巧的变体,其不统计从起止位置到目前元组的sum,而是统计当前元素相较于前一个元素的偏移量diff 例如一个数组 nums [1,2,3,4] 其对应的差分数组为 diff [1,1,1,1] 一般将差分数组的首个元素初始化为原数组中的数据。 对于一个nums,可以直接构造一个diff,同样的对于一个给定的diff数组,我们可以将其还原为...
求区间元素和 L303 区域和检索 - 数组不可变 为了计算一个区间内所有元素的和,我们可以为每个元素维护一个前缀和,表示从开头到该元素的所有元素的和。这样,通过计算区间终点的前缀和减去起点前缀和,可以得到该区间内元素的和。这种方法可以有效地减少重复计算,提高计算效率。 求二维区间的元素和 L304 二维区域和检索 - 矩阵不可变 当区间变为二维时,我们仍然可以沿用前缀和的思路进行...
链表删重 L82 删除排序链表中的重复元素 II distinct的加强操作,不是去重,而是只要重复就全部删除。 思路上的双指针就是一个用于遍历元素,一个用于组成新的链表 medium的难点是处理linkedlist的节点问题,在循环遍历的循环体中进行条件判断的代码编写需要一点技巧,在内部维护boolean表示当前遍历的是否为重复元素的写法比较好。 while (p != null...
快慢指针 L26 删除有序数组的重复项 当快指针遍历到数组中的重复项时,快指针继续向前遍历;当快指针遍历到不重复的数值时,慢指针将该数值赋值并前进到下一位。 L27 删除数组中的指定元素 快指针遇到targetval则直接跳过,否则慢指针将该数值赋值并前进到下一位。 左右指针 相向而行 - L167 两数之和2 因为是排好序的,所以计算sum的时候若< target, 在...
Eratosthenes筛选法的思路 找到素数是很麻烦的一件事情,但是做排除一个合数是很简单的。首先从 2 开始,我们知道 2 是一个素数,那么 2的倍数就都不可能是素数了。然后我们发现 3 也是素数,那么同理排除掉所有3的倍数。由此不断排除后,剩下的就是素数了。 Sieve of Eratosthenes的一些优化细节 由于因子的对称性,我们筛选操作只需要遍历[2,sqrt...