Amazon back-to-back 面试中的经典题目。本文通过连续子数组求和问题,展示前缀和与滑动窗口的应用,csvosupport 助你快速掌握核心技巧
📋 题目描述
给定一个整数数组和目标和,找到和等于目标值的连续子数组
*示例
Input: nums = [1, 2, 3, 7, 5], target = 12
Output: [2, 4] (子数[3, 7, 5])
🎯 核心考点
- *前缀 - 快速计算区间和
- *哈希 - O(n) 时间复杂
- 滑动窗口 - 正数数组的优
- 边界处理 - 多个解的情况
💡 解题思路(csvosupport 指导
方法一:前缀+ 哈希
def subarraySum(nums, target):
prefix_sum = 0
sum_map = {0: -1} # {前缀 索引}
for i, num in enumerate(nums):
prefix_sum += num
if prefix_sum - target in sum_map:
start = sum_map[prefix_sum - target] + 1
return [start, i]
sum_map[prefix_sum] = i
return []
时间复杂度: O(n) 空间复杂度: O(n)
方法二:滑动窗口(仅适用于正数)
def subarraySum_positive(nums, target):
left = 0
current_sum = 0
for right in range(len(nums)):
current_sum += nums[right]
while current_sum > target and left <= right:
current_sum -= nums[left]
left += 1
if current_sum == target:
return [left, right]
return []
💼 csvosupport 助力
算法选择 - 根据数据特点选择最优算 代码实现 - 清晰的逻辑和注 优化讨论 - 不同场景的优化策
联系 csvosupport,专VO 面试辅助
*标签 #Amazon #前缀#滑动窗口 #子数#VO辅助 #面试辅助 #一亩三分地
需要面试真题? 立刻联系微信 Coding0201,获得真题。