
这场是 Amazon Intern OA,平台 HackerRank,总时长 70 分钟。两题都偏基础,但很考细节和表达节奏。
Q1:返回第一个只出现一次的字母位置
面试可复述的话术
这题我会分两遍做:
- 第一遍先统计每个字母出现次数(HashMap / 频次数组都行)。
- 第二遍按原字符串顺序扫,找到第一个频次为 1 的字符,返回它的位置。
如果扫完都没有,就返回题目约定的兜底值(常见是 -1)。
复杂度
- 时间复杂度:
O(n) - 空间复杂度:
O(Σ)(字符集固定时可视为常数)
Q2:统计和为目标值的“不同配对数量”

面试可复述的话术
我是逐个看每个数字 x:
- 先算出它需要的补数
need = target - x - 如果之前见过
need,说明形成一对 - 为了去重,不直接记
(x, need),只记录这对里较小的那个值
最后统计“记录集合”里有多少个不同值,就是不同配对数。
这个去重方式很稳,因为同一组数值对(例如 2 和 7)无论按什么顺序遇到,记录的都是同一个较小值 2。
复杂度
- 时间复杂度:
O(n) - 空间复杂度:
O(n)
临场易错点
- Q1 把“第一个唯一字符”写成“任意唯一字符”
- Q1 返回字符而不是索引
- Q2 只做了 two-sum 命中,但忘了配对去重
- Q2 把同一对重复计数(顺序不同造成重复)
一句话总结
这套题核心不在难算法,而在:基础方法要稳、边界要全、去重要说清楚。
如果你也在准备 Amazon Intern OA(HackerRank),欢迎交流同类题的高频变体与表达模板。
延伸阅读(外链)
需要面试真题? 立刻联系微信 Coding0201,获取真题。
联系方式
Email: [email protected]
Telegram: @OAVOProxy