AmazonCrackedResource第3周刷题解析:滑动窗口与双指针组合拳,突破高频经典题
【免费下载链接】AmazonCrackedResourceA List of frequently asked questions in Amazon's Online Assessment and Interviews项目地址: https://gitcode.com/gh_mirrors/am/AmazonCrackedResource
AmazonCrackedResource 是一份亚马逊高频面试题(Online Assessment + 面试)刷题清单项目。本文聚焦其中的第3周刷题计划,围绕滑动窗口与双指针两大核心技巧,带你逐题拆解10道高频经典题,帮助你在面试前快速突破子串、区间、股票交易类问题 💪
📋 第3周题单速览:10道高频经典题
第3周的10道题目完整收录在 CrackAmazonResource.md 文件第65–79行,建议先通读一遍题单,再按技巧分组攻克:
| 题目 | 核心技巧 | 难度定位 |
|---|---|---|
| Longest Substring Without Repeating Characters | 滑动窗口 + 哈希表 | 中等 |
| Add Two Numbers | 链表 + 进位模拟 | 中等 |
| Merge Intervals | 排序 + 贪心 | 中等 |
| Analyze User Website Visit Pattern | 排序 + 分组统计 | 中等 |
| Prison Cells After N Days | 模拟 / 找循环节 | 简单 |
| Meeting Rooms II | 排序 + 最小堆 | 中等 |
| Group Anagrams | 哈希表分类 | 中等 |
| Sliding Window Maximum | 单调队列 | 困难 |
| Median of Two Sorted Arrays | 二分 + 双指针 | 困难 |
| Best Time to Buy and Sell Stock | 双指针 / 动态规划 | 简单 |
你会发现一个规律:第3周是"窗口与指针"的集中训练场——10道题里至少5道可以直接套用滑动窗口或双指针模板。
🪟 滑动窗口入门:无重复字符的最长子串(必刷第一题)
Longest Substring Without Repeating Characters是滑动窗口的"开山题",亚马逊面试出现率极高。
🧠思路三步走:
- 右指针扩张:窗口
[left, right]内的字符保证不重复,每步把right的新字符加入窗口; - 左指针收缩:一旦发现
right字符已在窗口内,就把left跳到"该字符上次出现位置的下一位",瞬间完成收缩,无需逐格移动; - 哈希表加速:用一个表记录每个字符最近一次出现的下标,收缩一步到位,整体时间复杂度降为 O(n)。
💡面试加分点:主动说清楚"为什么收缩不是一步步挪",这是考察你对窗口不变量理解的关键。
🪟 滑动窗口进阶:Sliding Window Maximum(单调队列)
Sliding Window Maximum是第3周唯一的 Hard 题,也是窗口题的天花板:维护一个大小为 k 的窗口,每步输出窗口最大值。
🧠核心技巧——单调递减队列:
- 队列里存元素下标,值保持从大到小;
- 新元素进队前,把队尾所有比它小的元素弹出(它们永远不会再成为最大值);
- 每次滑动,检查队头是否已滑出窗口,滑出则弹出;
- 每个元素最多进队、出队各一次,因此总复杂度 O(n)。
这道题与入门题对照着刷,你就能看到滑动窗口从"哈希表辅助"到"结构维护极值"的完整进化路线 📈
🔗 双指针入门:Best Time to Buy and Sell Stock
Best Time to Buy and Sell Stock看似是动态规划,本质是双指针思想:
- 指针一始终指向"历史最低价格"(只更新更小值);
- 指针二逐日扫描,用"当日价 - 最低价"计算最大利润;
- 一次遍历,O(n) 时间、O(1) 空间。
⚠️ 注意:亚马逊常追问其变体(含手续费、只能交易两次、可无限次),建议把这题当作指针 + 状态维护的模板来记,而不是死背解法。
🔗 双指针进阶:Median of Two Sorted Arrays
Median of Two Sorted Arrays要求 O(log(m+n)) 找两个有序数组的中位数,是第3周最硬的一道。
🧠破题关键:
- 在较短数组上二分切分点,使左半部分总长度固定为
(m+n+1)/2; - 切分点由"短数组的指针"唯一确定,长数组的切分点随之算出——这就是双指针的配合;
- 校验"左侧最大值 ≤ 右侧最小值",满足即得中位数,否则调整二分边界。
面试时把"为什么在短数组上二分"讲清楚(省一半搜索空间 + 统一边界处理),基本能拿到满分表达。
📊 组合拳篇:Merge Intervals 与 Meeting Rooms II
这两道题是"排序 + 指针/堆"的组合拳,也是亚马逊系统分析类场景题的常客:
Merge Intervals(合并区间)
- 先按区间左端点排序;
- 用一个指针遍历,若当前区间左端点 ≤ 上一个区间右端点,则合并取更大的右端点;
- 一次遍历完成合并,核心是"排序后重叠问题退化为线性扫描"。
Meeting Rooms II(会议室数量)
- 同样先按开始时间排序;
- 用最小堆维护"正在使用会议室的结束时间";
- 每个会议开始先弹出已结束的堆顶,堆的最大规模就是需要的会议室数。
💡 建议把这两题当成一组刷:前者练"排序 + 单指针扫描",后者练"排序 + 堆维护重叠数",组合拳打完,区间类问题基本免疫。
📅 第3周7天刷题计划表
| 天数 | 题目安排 | 目标 |
|---|---|---|
| Day 1 | 无重复字符最长子串 + Sliding Window Maximum | 吃透滑动窗口模板 |
| Day 2 | 买卖股票的最佳时机 + 两个有序数组的中位数 | 双指针 + 二分配合 |
| Day 3 | 合并区间 + 会议室 II | 区间组合拳 |
| Day 4 | 字母异位词分组 + 分析用户网站访问模式 | 哈希表分类技巧 |
| Day 5 | 两个数相加 + 监狱困N天后牢房状态 | 链表与模拟题 |
| Day 6 | 重做本周所有错题 | 限时独立复现 |
| Day 7 | 随机抽3道做45分钟模拟面试 | 练表达与白板 |
🚀 如何快速开始使用 AmazonCrackedResource
三步上手,立刻进入第3周刷题状态:
克隆仓库(git clone 地址):
git clone https://gitcode.com/gh_mirrors/am/AmazonCrackedResource打开清单:核心文件是
CrackAmazonResource.md,第3周题单在第65–79行,旁边配有状态列与难度列;README.md则汇总了配套的完整 DSA 学习资源导航;打卡追踪:每做完一题,把表格中 Status 列改为Done ✅、In Progress 🕓 或 Skipped ❌,难度按 Easy 到 Hard 五档自评,一周后回看自己的进度曲线,坚持每周提交一次 commit 就是最好的学习节奏。
项目基于 MIT 协议发布(见LICENSE),可自由 fork 与二次创作。
✍️ 小结
第3周的关键词只有八个字:窗口收缩,指针推进。滑动窗口练"边界的维护",双指针练"状态的压缩",而 Merge Intervals、Meeting Rooms II 这类组合拳题则检验你拆题的功力。按上面的7天计划把10道题刷完,你在子串与区间两大高频考区就已经超过了大多数竞争者 🏆
【免费下载链接】AmazonCrackedResourceA List of frequently asked questions in Amazon's Online Assessment and Interviews项目地址: https://gitcode.com/gh_mirrors/am/AmazonCrackedResource
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考