算法刷题238. 除自身以外数组的乘积通过两次遍历(左到右和右到左)分别计算每个位置左边和右边的乘积,最后将两部分相乘得到结果,避免使用除法且实现O(n)的时间复杂度。 LeetCode LeetCode hot100 数组 前缀和
算法刷题189. 轮转数组通过三次翻转(整体翻转、前k个元素翻转、剩余元素翻转)实现数组右移k位,时间复杂度O(n),空间复杂度O(1)。 LeetCode LeetCode hot100 数组 双指针 数学
算法刷题56. 合并区间先按区间起点排序,然后遍历区间进行合并,如果当前区间起点大于上一个区间终点则无法合并(加入新区间),否则合并区间(更新终点为较大值)。 LeetCode LeetCode hot100 数组 排序
算法刷题53. 最大子数组和遍历数组并累加当前元素,当子数组和小于等于0时舍弃当前子数组重新开始计算,期间不断更新最大和,最终得到全局最大子数组和。 LeetCode LeetCode hot100 数组 动态规划 分治
算法刷题239. 滑动窗口最大值使用单调递减的双端队列存储数组元素下标,通过维护队列的单调性来实现O(n)时间复杂度内求解滑动窗口的最大值。 LeetCode LeetCode hot100 数组 滑动窗口 队列 单调队列 堆
算法刷题560. 和为 K 的子数组本题使用前缀和 + 哈希表的方法求解。通过构建前缀和数组,可以快速计算任意区间的和。使用哈希表记录每个前缀和出现的次数,当遍历到前缀和s[i]时,查找s[i]-k是否存在于哈希表中,若存在,则找到了和为k的子数组。该方法的时间复杂度为O(n),空间复杂度为O(n)。 LeetCode LeetCode hot100 数组 哈希表 前缀和