hot 100
文章平均质量分 61
hi酱
小肥猫爱喝奶茶
展开
-
Leetcode 75 颜色分类
这个问题可以通过一种称为“三指针”方法来高效解决。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。用于当前遍历的元素。这一题感觉就是指针的加减绕得好晕啊。必须在不使用库内置的 sort 函数的情况下解决这个问题。给定一个包含红色、白色和蓝色、共。用于蓝色(2)的正确位置交换,而。用于红色(0)的正确位置交换,分别表示红色、白色和蓝色。i(指向当前的元素)原创 2024-03-13 16:18:37 · 194 阅读 · 0 评论 -
滑动窗口专题
滑动窗口技术之所以强大,是因为它利用了窗口的边界来减少不必要的计算,通过只在窗口的一侧添加或删除元素,它能够在不重新遍历整个数组或字符串的情况下,快速更新窗口内的信息。滑动窗口技术是一种强大的算法策略,主要用于解决涉及连续子数组或子字符串的问题,尤其是当这些问题要求优化时间复杂度时。,这显然是错误的,因为我们已经移除了第一个 'm' 来处理第二个 'm' 的重复情况。表示遍历到的当前位置,它们共同定义了滑动窗口的边界。变量表示当前考虑的不含重复字符子串的起始位置,的较大值,以保证窗口始终向前滑动,不回退。原创 2024-03-13 15:18:52 · 566 阅读 · 0 评论 -
LeetCode 128 最长的连续序列
将所有元素添加到HashSet去重:如果数组中包含重复的元素,HashSet会自动去除这些重复项。这样做可以避免在寻找连续序列时对同一个数字重复计算。快速查找HashSet的查找时间复杂度为 O(1),这意味着无论集合中有多少元素,查找操作的速度都非常快。在这个问题中,我们需要频繁地检查某个元素是否存在于集合中,特别是在判断连续序列时,能否快速判断一个元素是否存在直接影响算法的整体效率。确定序列起点:算法的核心在于找到连续序列的起点,然后从这些起点开始向后寻找连续的元素。使用HashSet。原创 2024-03-12 16:29:02 · 616 阅读 · 1 评论 -
Leetcode1 两数之和
思路绕了一下,哈希表最主要的就是想清楚key和value到底存什么,以 nums = [2,7,11,15], target = 9为例,key存入了nums[i],value 存了i索引。然后在循环体中加入判断——运用遍历到的数据nums[i], 判断map中存在(target-nums[i])这个key吗,存在就输出对应的数组(一个通过key值取出对应的value(map.get(key)),一个是当前的索引)。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。原创 2024-03-12 00:44:02 · 92 阅读 · 2 评论 -
Leetcode 20 有效的括号
思路不难,但要注意记得在stack.pop()进行空栈判断,否则可能出现空栈异常,而且比较完栈顶元素要出栈,所以是pop(),不是peek(),判断字符串是否有效。原创 2024-03-12 00:22:55 · 139 阅读 · 1 评论