Amazon 最新 OA 双题技术复盘:差分+二分与翻转移位最短步数(含 Python 模板与 2026 上岸案例)
目录
题目一:区间内“恰好 k 个进程运行”的秒数
核心目标是回答多个查询:在 [l, r] 内,有多少秒并发数恰好为 k。
最优思路
- 用差分数组记录每个进程区间的 +1/-1 变化。
- 前缀和还原每一秒并发数
countAtTime[t]。 - 把“并发数相同的秒”按
k分桶存为有序列表。 - 每个查询对对应桶做二分,统计落在
[l, r]的秒数。
Python 参考实现
from bisect import bisect_left, bisect_right
from collections import defaultdict
from typing import List
def count_exact_process_seconds(
starts: List[int],
ends: List[int],
query_process: List[int],
query_start: List[int],
query_end: List[int]
) -> List[int]:
max_time = max(max(starts), max(ends), max(query_end))
delta = [0] * (max_time + 2)
for s, e in zip(starts, ends):
delta[s] += 1
delta[e + 1] -= 1
process_to_times = defaultdict(list)
running = 0
for t in range(max_time + 1):
running += delta[t]
process_to_times[running].append(t)
ans = []
for k, l, r in zip(query_process, query_start, query_end):
arr = process_to_times.get(k, [])
ans.append(bisect_right(arr, r) - bisect_left(arr, l))
return ans
复杂度
- 预处理:
O(T + n),T = max_time - 每次查询:
O(log M),M为该并发值桶长度 - 总体:
O(T + n + q log M)
高频扣分点:end 是闭区间,差分必须在 end + 1 做 -1。
题目二:翻转 + 移位的最少操作次数
操作只有两种:
- 整体翻转
R - 首元素移到末尾
S(左旋 1 位)
关键观察
可达状态只会落在两类:
- 升序环形旋转(
[1..n]的旋转) - 降序环形旋转(
[n..1]的旋转)
所以先判型,再套最短步数公式即可。
Python 参考实现
from typing import List
def min_ops_sort_with_reverse_and_shift(nums: List[int]) -> int:
n = len(nums)
if n <= 1:
return 0
def is_asc_cycle(a: List[int]) -> bool:
for i in range(n):
if a[(i + 1) % n] != (a[i] % n) + 1:
return False
return True
def is_desc_cycle(a: List[int]) -> bool:
for i in range(n):
expected = ((a[i] - 2) % n) + 1
if a[(i + 1) % n] != expected:
return False
return True
if is_asc_cycle(nums):
# nums = 升序左旋 t 位
t = nums[0] - 1
# 方案1:一直左旋回正;方案2:R + 左旋 t 次 + R(等价右旋 t)
return min((n - t) % n, t + 2)
if is_desc_cycle(nums):
# nums = 降序左旋 t 位
t = (n - nums[0]) % n
# 先翻转一次回到升序方向,再选更短旋转方向
return 1 + min(t, n - t)
# 题目保证可排好;这里仅做健壮性兜底
return -1
复杂度
- 判型 + 计算:
O(n)时间,O(1)额外空间。
2026 上岸案例(通过我们服务)
2026 年 2 月,深圳后端工程师 K 同学(6 年 Java,连续 2 次 OA 挂在边界用例)报名我们的 Amazon OA 冲刺服务。 我们做了三件事:
- 用“差分 + 二分模板”重写其区间题代码,统一闭区间处理。
- 用“环形判型 + 最短步数公式”替换暴力 BFS。
- 按 Amazon 评分习惯补齐复杂度口述与测试策略。
结果:第 9 天完成 OA 两题全过,第 5 周拿到 SDE II Offer。 这类候选人最常见的问题不是不会写,而是“写得慢 + 边界不稳 + 口述不结构化”。
立即预约:1v1 OA 诊断
你将拿到:
- 你的 OA 薄弱点定位(算法 / 代码实现 / 时间分配)
- 7 天可执行刷题清单
- 可直接背诵的复杂度与 trade-off 话术模板
面试救急
面试救急通道(48 小时内排期)
如果你已经收到 OA/VO 邀请,但准备时间不足 7 天,我们提供高强度救急方案:
- 当日做题诊断 + 次日补漏洞训练
- 岗位定制高频题与行为题脚本
- 一次模拟面试 + 一次复盘纠错
现在预约,优先安排本周面试官级教练时段。