Amazon back-to-back 面試中的經典題目。本文通過連續子陣列求和問題,展示前綴和與滑動視窗的應用,oavoservice 助你快速掌握核心技巧。
📋 題目描述
給定一個整數陣列和目標和,找到和等於目標值的連續子陣列。
範例:
Input: nums = [1, 2, 3, 7, 5], target = 12
Output: [2, 4] (子陣列 [3, 7, 5])
🎯 核心考點
- 前綴和 - 快速計算區間和
- 雜湊表 - O(n) 時間複雜度
- 滑動視窗 - 正數陣列的優化
- 邊界處理 - 多個解的情況
💡 解題思路(oavoservice 指導)
方法一:前綴和 + 雜湊表
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 []
💼 oavoservice 助力
演算法選擇 - 根據數據特點選擇最優演算法 程式碼實作 - 清晰的邏輯和註釋 優化討論 - 不同場景的優化策略
聯繫 oavoservice,專業 VO 面試輔助!
標籤: #Amazon #前綴和 #滑動視窗 #子陣列 #VO輔助 #面試輔助 #一畝三分地
需要面試真題? 立刻聯繫微信 Coding0201,獲得真題。