算法
文章平均质量分 53
kernel_Xs
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最长连续序列(leetcode hot100)
降低时间复杂度为O(n):当一个数是连续序列的第一个数的情况下才会进入内层循环,然后在内层循环中匹配连续序列中的数,因此数组中的。3.遍历去重后的set,加上if条件(当一个数是连续序列的第一个数的情况下才会进入内层循环)2. 遍历数组nums中的每一个数并存入set中(去重)。创建一个HashSet,值的类型是int。4.循环遍历求出当前最长连续序列。5.每次遍历更新最长连续序列的值。原创 2025-02-13 16:41:37 · 217 阅读 · 0 评论 -
长度最小的子数组算法理解
也可以理解为双指针法的一种,通过不断调节子序列的起始位置和终止位置,从而得到我们想要的结果。只用一个for循环,那么这个循环中的索引一定是终止位置。窗口起始位置如何移动:通过每次满足 sum >= target 时 让 sum -= nums[i--];也就代表窗口开始缩小了,向前移动了。窗口内容:满足 和 >= target 的长度最小的连续子数组。窗口的结束位置:遍历数组的指针,也就是for循环中的索引。暴力算法会导致超时,使用滑动窗口解决。时间复杂度:O(n)原创 2024-12-11 23:15:05 · 591 阅读 · 0 评论 -
移除元素算法理解
如果要移除的元素恰好在数组的开头,例如序列 [1,2,3,4,5],当 val 为 1 时,我们需要把每一个元素都左移一位。实际上我们可以直接将最后一个元素 5 移动到序列开头,取代元素 1,得到序列 [5,2,3,4],同样满足题目要求。时间复杂度:O(n),其中 n 为序列的长度。时间复杂度:O(n),其中 n 为序列的长度。数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。空间复杂度:O(1)。空间复杂度:O(1)。快指针:寻找新数组的元素(不包含目标值元素的数组)原创 2024-12-11 07:54:22 · 227 阅读 · 0 评论 -
二分查找算法理解
while(left <= right) 中的符号必须是 <= 因为在这个区间里,left == right是有意义的if(nums[middle] > target) 那么重新定义左区间时 右边界 right = middle -1 ,因为当前这个nums[middle]一定不是target那么接下来要查找的左边界结束下标位置就是middle-1return mid;初始赋值 right = nums.length;原创 2024-12-11 06:16:28 · 543 阅读 · 0 评论 -
字母异位词分组(LeetCode hot100)
4. 检查这个键是否存在于map中,如果存在,就将s添加到对应的列表中;否则,创建新的列表,并将键和列表添加到map中。如何将每个字符串转换成一个统一的标识,这样同一组的异位词会有相同的标识,然后根据这个标识来分组。1. 创建一个HashMap,键的类型是String,值的类型是List<String>。5. 最后,将map中的所有值(即各个列表)收集到一个List中,作为结果返回。3. 对每个s,将其转换为字符数组,然后排序,再转换为字符串作为键。2. 遍历输入的字符串数组strs中的每一个字符串s。原创 2025-02-13 16:14:28 · 193 阅读 · 0 评论
分享