JPMorgan Chase OA 高频题复盘|高频真题 + 思路拆解一篇搞定

29次閱讀
No Comments

最近 JPMorgan Chase OA 已经开始批量发放,平台依旧是熟悉的 HackerRank。整体难度不高,但节奏要求很紧,属于那种“会就是送分,不会就卡住”的典型筛选题。这次分享一套非常高频的组合:滑动窗口 + 贪心(堆),基本很多人都会遇到类似版本。

JPMorgan Chase

题目 1:Highly Profitable Months

题目解析

题意:给定一个股票价格数组 stockPrices 和参数 k,找出所有长度为 k 的连续子区间,满足区间内股票价格严格递增,统计这样的区间数量。

  • 特殊情况:当 k=1 时,所有单个元素都满足条件,直接返回数组长度 n
  • 核心判断:对于每个长度为 k 的窗口,检查是否满足 stockPrices[i] < stockPrices[i+1] < ... < stockPrices[i+k-1]

解题思路

  1. 先预处理数组,生成一个 “递增标记数组”:inc[i] = 1 当且仅当 stockPrices[i] < stockPrices[i+1],否则为 0
  2. 长度为 k 的严格递增区间,等价于在标记数组中存在长度为 k-1 的连续 1
  3. 统计标记数组中连续 k-11 的窗口数量,即为答案。

示例

stockPrices = [5, 3, 5, 7, 8]k=3

  • 标记数组:[0, 1, 1, 1](因为 5>33<55<77<8
  • 寻找连续 21 的窗口:[1,1](位置 1-2)、[1,1](位置 2-3),共 2 个,与示例结果一致。

题目 2:Array Reduction 1

题目解析

题意:给定整数数组 num,每次操作选择两个不同元素,删除它们并将和加入数组末尾,操作代价为两数之和。求将数组缩减到只剩 1 个元素时的最小总代价。

解题思路

这是经典的 哈夫曼编码(Huffman Coding) 问题,等价于合并果子问题:

  • 每次合并两个最小的元素,总代价最小。
  • 原理:较小的数会被多次计入总和,优先合并小数可以让它们的和被更少次累加,从而总代价最小。
  • 实现:使用最小堆(小根堆),每次弹出两个最小元素求和,将和重新入堆,并累加代价,直到堆中只剩一个元素。

示例

num = [4,6,8]

  • 堆初始化:[4,6,8]
  • 第一次合并:4+6=10,代价 10,堆变为 [8,10]
  • 第二次合并:8+10=18,代价 18,总代价 10+18=28,与示例最小结果一致。

关于 JPMorgan Chase OA 的小分享

这次 JPMorgan Chase OA 能比较顺利地快速通过,说实话很大一部分原因是提前找了 ProgramHelp 帮忙做针对性准备。他们团队配置确实挺硬核的:核心一共 7 个人,背景都很顶,有名校背景,另外还有在 Amazon、Google 和阿里这种一线大厂在职的工程师。

形式上是远程协助,不会影响你正常操作,整体比较低调、安全。如果你最近也在准备类似:JPMorgan Chase,Goldman Sachs,或者 Amazon 这种 OA / 笔试,有人帮你把关,确实会稳很多。

author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
正文完
 0