leetcode hot 100
橘子味的茶二
我像一粒尘埃
展开
-
leet hot 100-13 最大子数组和
生成一个数字来记录last 表示前面数字全部之和与0取最大值 如果大于0 就加上如果不大于0 就不管 从当前位置从新开始遍历计算。时间复杂度O(n) 空间复杂度(1)原创 2024-04-03 15:05:13 · 271 阅读 · 0 评论 -
leet hot 100-10 和为 K 的子数组
看到连续非空数组 想到前缀和数组 首先记录前缀和 然后从前往后运算 计算当前位置的前缀和的大小 减少k个 那么这个数字在前缀和的数组中有多少。时间复杂度O(n) 空间复杂度(n)原创 2024-04-03 14:56:45 · 288 阅读 · 0 评论 -
leet hot 100-9 找到字符串中所有字母异位词
遍历整个数组 每次把当前元素在容器中的次数减去1 表示这个当前维护的窗口里面s[i] 的次数需要满足的点-1,然后查看当前的窗口的大小是否大于指定的p的大小 只有窗口大小等于p的大小才能查看窗口里面的值是否全部满足条件,如果要大于窗口里面的值 需要将j往后面走 就从新把条件收回 如果cnt[j] 表示需要满足的条件j这一位 如果刚好满足 但是窗口要减小了 它不满足了 就要收回相关的满足条件 只到把窗口调整为p的大小。最后再查看一下满足的条件 是否等于p中不同字母的数量。时间复杂度O(n) 空间复杂度(n)原创 2024-02-27 14:41:15 · 302 阅读 · 0 评论 -
leet hot 100-8 无重复字符的最长子串
声明一个无序map容器,容器里面记录着窗口里面字符的数量 ,如果字符的数量大于1 遍历到s[i]的时候 数量+1 此时如果map里面相关的数量大于1 说明窗口里面有重复值 需要将相关的值减少1 维护最大不同字母数量。时间复杂度O(n) 空间复杂度(n)原创 2024-02-26 21:53:11 · 508 阅读 · 0 评论 -
leet hot 100-6 三数之和
从前往后定义第一个数字 first 开始遍历整个数组 然后要求 frist和上一个数字不重复否则就是重复组合。再定义第三个数字从后往前面数 三个数字相加直到加到 相加小于 0或者等于0为止 然后判断值 并记录答案。从frist往后遍历第二个数字 同样要求第二个数字不能重复。时间复杂度O(n^2) 空间复杂度(1)原创 2024-02-26 21:25:11 · 190 阅读 · 0 评论 -
leet hot 100-4 移动零
遍历数组 将非0数字 移动到数组前端 数字0就会被移动到数组末端。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:21:54 · 328 阅读 · 0 评论 -
leet hot 100-3 最长连续序列
如果是起始位置 就记录一下当前值 并把当前值从无序集合里面清除,然后去查看一下当前值+1是否存在。每一次去遍历数字 查看但当前数字是否为起始位置(它的前面是否有比它小一位的数字)存在的话就继续删除并+1 直到没有下一个值为止 期间维护一个最大值 最后返回。可以把所有的数字放到容器里面去 维护一个最大值。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:15:27 · 159 阅读 · 0 评论 -
leet hot 100-2 字母异位词分组
要求把含有相同字母的放到一起,我们可以遍历每一个字符串 将他们重新排序,将排序完是一样的字符串放在一起 用无序容器存放起来。然后遍历这个无序map容器将排序后相同的值放在一起。时间复杂度O(n) 空间复杂度(n)原创 2024-02-24 11:05:56 · 391 阅读 · 0 评论 -
leet hot 100-1 两数之和
当我们遍历一个新的数字的时候 减一下与目标值的差。然后得到的结果在容器里面查看是否存在。时间复杂度O(n) 空间复杂度(n)可以把当前数字放到容器里面去。原创 2024-02-24 10:57:30 · 199 阅读 · 0 评论