力扣 Hot100 刷题日记:从入门到进阶
刷题是提升算法和数据结构能力的重要途径,力扣(LeetCode)作为全球知名的编程题库,其 Hot100 更是经典中的经典。以下是一份详细的刷题日记,涵盖高频题目解析、代码示例和解题思路,帮助从入门到进阶。
两数之和(Two Sum)
题目要求在数组中找到两个数,使它们的和等于目标值。使用哈希表可以在 O(n) 时间内解决。
def twoSum(nums, target):
hash_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hash_map:
return [hash_map[complement], i]
hash_map[num] = i
return []
哈希表存储已遍历的数字及其索引,每次检查当前数字的补数是否存在于表中。
无重复字符的最长子串(Longest Substring Without Repeating Characters)
滑动窗口是解决子串问题的经典方法。
def lengthOfLongestSubstring(s):
char_set = set()
left = 0
max_len = 0
for right in range(len(s)):
while s[right] in char_set:
char_set.remove(s[left])
left += 1
char_set.add(s[right])
max_len = max(max_len, right - left + 1)
return max_len
维护一个窗口,通过移动左右指针确保窗口内无重复字符。
盛最多水的容器(Container With Most Water)
双指针法可以高效解决最大化容器面积问题。
def maxArea(height):
left, right = 0, len(height) - 1
max_area = 0
while left < right:
area = min(height[left], height[right]) * (right - left)
max_area = max(max_area, area)
if height[left] < height[right]:
left
1475

被折叠的 条评论
为什么被折叠?



