MetaOAAlgorithm

[Meta] OA 真题解析

Meta OA 真题解析

题目 1:Count Changes In Recording

题目描述

给定一个录音数组 recording,计算录音中声音变化的次数。声音变化指当前音节与前一个音节不同时,计为一次变化。第一个音节不计入变化次数。

参数:

  • recording: 字符串数组,每个元素是一个音节

示例:

输入: ["a", "b", "b", "a", "b", "c"]
输出: 4
解释: a->b(1), b->a(2), a->b(3), b->c(4)

解题思路

  1. 如果录音为空,返回 0
  2. 初始化计数器为 0,记录前一个音节(转为小写)
  3. 遍历从第二个音节开始,与前一个音节比较
  4. 如果不同,计数加 1,更新前一个音节
  5. 返回最终计数

题目 2:Play On The池塘

题目描述

给定一个整数数组 numbers,玩家可以在数组上玩一个游戏。每次选择最左边的正数作为操作值,然后从这个位置开始向右扫描,将所有大于等于该值的元素都减去该值。返回执行的操作次数。

参数:

  • numbers: 整数数组,可包含正数、负数和零

示例:

输入: [3, 1, 2, 1]
输出: 2
解释:
  第一轮: 选择3,从位置0开始,3-3=0, 1-3<0不变, 2-3<0不变, 1-3<0不变 -> [0,1,2,1]
  第二轮: 选择1,从位置1开始,1-1=0, 2-1=1, 1-1=0 -> [0,0,1,0]
  没有正数了,返回2

解题思路

  1. 循环直到没有正数为止
  2. 找到第一个正数的位置和值
  3. 从该位置向右扫描,将所有 >= 该值的元素都减去该值
  4. 计数加 1
  5. 返回计数

题目 3:Vote Center

题目描述

模拟一个投票中心系统,有 n 个投票中心,每个中心有最大容量 centerCapacities。每日日志 dailyLog 记录了中心的运营情况。

操作类型:

  • CLOSURE j: 关闭中心 j,之后不再该中心进行投票
  • VOTING: 投票操作,轮流在各开放中心投票,直到达到容量上限

规则:

  1. 只有开放的中心可以接收投票
  2. 投票按顺序轮流:首先从 index=0 的开放中心开始,依次向下轮转
  3. 当一个中心达到容量上限后,轮转到下一个中心
  4. 如果所有中心都达到容量,重置所有中心的剩余容量
  5. 返回获得投票最多的中心的索引(票数相同则选索引更大的)

题目 4:Matching Arrays

题目描述

给定两个数组 firstArray 和 secondArray。对于 firstArray 中的每个元素,生成其所有前缀子串(前缀长度从 1 到完整长度)。然后对于 secondArray 中的每个元素,找其最长前缀,使得该前缀在 firstArray 的所有前缀集合中。

参数:

  • firstArray: 整数数组
  • secondArray: 整数数组

返回值:

  • secondArray 中所有元素满足条件的最大前缀长度的最大值

总结

这4道题涵盖了:

  • 字符串处理:变化检测、前缀匹配
  • 数组操作:模拟游戏过程、投票轮转
  • 数据结构:哈希表存储前缀、列表管理开放中心
  • 模拟能力:状态机、轮转调度

Meta OA分为70 Min和90 Min两个版本,70 MIn的是4个Leetcode 类型算法题,这个在Codesignal平台的题目都是共享的,本人有收集好的真题题库,只要是在Codesignal平台的都是共享的,有需要也可以联系~