"详细代码解析:Leetcode刷题记录"

需积分: 11 0 下载量 109 浏览量 更新于2023-12-21 收藏 342KB DOC 举报
在本文中,我将分享我的leetcode刷题记录,包括我在解决每个问题时所使用的代码和思路讲解。这份记录非常详细,旨在帮助其他人更好地理解leetcode题目的解法和编程技巧。 21、TWO SUM 这道题的关键在于要找到数组中两个数的和等于目标值。我首先考虑使用哈希表来解决这个问题。我遍历数组,将每个元素与其索引存储在哈希表中。然后,我再次遍历数组,对于每个元素,我检查目标值减去当前元素的差是否存在于哈希表中,如果存在,则返回它们的索引。这种方法的时间复杂度为 O(n),空间复杂度为 O(n)。 22、ADD TWO NUMBERS 这是一道链表题,我首先将两个链表的头节点相加,并将和的个位作为结果链表的头节点。然后,我初始化一个进位变量,用于处理两个节点的相加。我遍历两个链表,每次取出两个节点的值,相加后加上进位值,并将和的个位作为新节点的值。然后,更新进位值,并继续遍历。如果在遍历结束后还有进位值,我会在结果链表的最后再添加一个节点。这种方法的时间复杂度为 O(max(m,n)),其中 m 和 n 分别是两个链表的长度。空间复杂度为 O(max(m,n)),用于存储结果链表。 43、LONGEST SUBSTRING WITHOUT REPEATING CHARACTERS 这道题要求找到给定字符串中最长的没有重复字符的子字符串的长度。我首先使用了双指针的方法来解决这个问题。我用一个哈希表来存储每个字符的索引,初始化两个指针 left 和 right,表示子字符串的起始位置和结束位置。然后,我遍历整个字符串,如果当前字符在哈希表中,表示重复出现了,我将 left 指针移动到该重复字符的下一个位置。更新子字符串的长度为当前位置减去 left 的距离,并将当前字符的索引存储在哈希表中。我不断更新最长的子字符串长度,直到遍历结束。这种方法的时间复杂度为 O(n),其中 n 是字符串的长度。空间复杂度为 O(min(m,n)),其中 m 是字符集的大小。由于字符集最多包含 26 个字母,因此空间复杂度是常数级别的。 在leetcode刷题的过程中,我不仅学会了如何使用不同的数据结构和算法来解决问题,还锻炼了自己的编程能力和思维逻辑。这份刷题记录也希望能够帮助其他人更好地理解leetcode题目,提高他们的编程技能。感谢你的阅读!
2024-11-29 上传