今年 12 月的微软 26NG OA ,依旧是 HackerRank 平台的两道编程题。整体风格:medium-hard、考点扎实、细节决定生死。
我这次也是顺顺利利一次 AC,趁热把题目 & 思路一起分享,希望你们也能一次过。

微软 2026 NG OA 真题(12 月最新)
Problem 1 — Discounted Prices
You are given an array prices where prices[i] is the original price of the i-th item. For each item i, its selling price is prices[i] - prices[j], where j is the index of the first item to the right of i such that prices[j] <= prices[i].
If there is no such j, the item is sold at its original price.
Return:
- the total sum of all selling prices
- the list of indices sold at original price (0-based)
右侧第一个 <= 的折扣问题(单调栈经典变体)
题目核心就是找:
每个元素右边,第一个 <= 它的值。
这是典型的「下一更小或等于元素」问题,用 单调递增栈 from right to left 一次解决。
核心思路
- 从右往左扫价格;
- 用一个 从底到顶递增 的栈,存已经处理过的价格 index;
- 每次遇到一个新价格,把所有 严格大于它 的栈顶弹掉,因为它们不可能成为这个商品的折扣;
- 最终栈顶如果是 <= 它的,就是它的折扣;如果栈空就没有折扣;
- 顺手累加总价,记录无折扣下标;
- 最后输出总价 + 原价出售的 index 列表。
时间复杂度
O(n),每个元素最多进栈 / 出栈一次。
易错点
- 注意是
<=,不是<。 - 从右往左处理,更方便维护单调结构。
- 无折扣下标按题目要求处理排序即可(面试官一般不卡,但写时要说清楚)。
Problem 2 — Prefix Permutation Segment Check
Given a permutation p of 1..n, for every k from 1 to n, determine whether there exists a contiguous subarray that forms a permutation of 1..k.
Output a binary string s of length n where s[k-1] = '1' if such a segment exists.
Permutation Prefix 判断(前缀窗口 min/max)
给定一个排列 p,问每个 k 是否存在一段连续 subarray,是 1..k 的排列。
关键观察
如果 1..k 这一堆数字在整个数组中的位置是:
最小位置 = L
最大位置 = R
且 R – L + 1 == k
那么它们正好占满了一个窗口,就是一个合法 segment。
算法
- 先记录每个数字的位置 pos[x];
- 遍历 k = 1..n:
- 更新当前的
cur_min,cur_max(就是前缀数字出现的最早/最晚位置); - 如果
cur_max - cur_min + 1 == k,则输出 ‘1’,否则 ‘0’。
- 更新当前的
时间复杂度
O(n)
易错点
- pos 数组必须是 0-based,一致性别搞错
- k=1 的时候 min=max=pos[1],一定是 ‘1’
微软 OA 的两道题有多“微软味”?
微软 OA 风格一直比较稳定:
- 套路并不刁钻,但非常注重“代码质量 + 复杂度 + 边界处理”。
- 当场写代码通常没太多时间 debug,所以 O(n) 方法要写得非常熟练。
- 第二题属于微软常见的 permutation reasoning 类问题,很考逻辑严谨度。
如果你平时训练不够,这类题会觉得“脑子想到了但写不顺”;但只要做对方向,代码都不复杂。
ProgramHelp 微软 2026 NG OA 专项助攻
今年微软 2026 NG 的 OA 明显更“卷”,Hackerrank 两题虽然不算超纲,但逻辑细、坑点多、时间紧,这也是很多同学掉点的原因。我们这边已经积累了多批次学员的真场景回放,包括 12 月最新版本的题型变化、常见卡点、最容易误判的边界情况。
如果你想更稳,我们可以提供:
- 实时语音助攻:做题过程中给你方向提醒、边界提示,不会替你操作,但能让你避免大多数陷阱。
- 0 痕迹远程联机辅导:全程安全,不触发平台检测,用的是我们稳定验证过的技术方案。