TikTok OA 四题分享|半小时内 AC,题目基本都是实现题

刚做完一场 TikTok OA,还是 CodeSignal,四题半小时不到 AC。

这场难度不算高,基本都是模拟 + 实现,真正容易丢分的反而是题目里的几个小条件。把这次遇到的题简单记一下,准备 TikTok OA 的可以看看。

T1|数位乘积 - 数位和

给一个正整数 n,计算:

各位数字乘积 - 各位数字之和

比如 123456:

乘积 = 720

和 = 21

答案 = 699

直接 % 10 取个位,//=10 去掉个位,同时维护 product 和 sum。

O(log n),注意乘积中间值可能比较大。


T2|给加法表达式加括号

这个题挺容易因为条件看错。

给定类似:

741+12

必须且只能加一对括号,而且 + 必须在括号里面,左右两边至少各有一位数字。

目标是让最终表达式值最小。

因为字符串长度不大,直接枚举左右括号位置即可。

每种合法划分算:

左边数字 ×(括号内左数字 + 括号内右数字)× 右边数字

最后取最小值。

这题没什么复杂算法,关键就是别把括号的合法范围搞错。


T3|内存分配 + 释放

经典模拟题。

memory 数组:

  • 0 = 空闲

  • 1 = 已占用

支持:

alloc X

从左往右找第一段连续 X 个空闲位置,找到后占用,并返回对应 ID。

erase ID

根据 ID 找到之前分配的区间,然后释放。

我的做法就是:

数组模拟 + HashMap

HashMap 保存:

ID → 对应内存区间

这样 erase 时可以直接定位。

这题最容易漏的是:连续 alloc / erase 后会产生碎片,但每次 alloc 还是要从左边重新找。


T4|数轴放灯,覆盖最多物体

objects 已经按升序排列。

在整数坐标放一盏灯,半径是 radius,求最多能照到多少个物体。

如果覆盖数量一样,返回更小的灯位置。

这题直接滑动窗口。

维护一个窗口 [l, r],只要:

objectsr - objectsl ≤ 2 × radius

就说明存在一个灯的位置可以覆盖整个窗口。

不断移动右指针,超出范围就移动左指针,同时记录:

最大覆盖数量 + 最小灯位置

整体 O(n)。


这场 OA 总结

题目 核心考点
T1 数位模拟
T2 枚举 + 字符串处理
T3 数组模拟 + HashMap
T4 Sliding Window

这场没有特别难的算法,比较像是在考:

能不能快速读懂规则 → 找到对应模板 → 把边界条件写对。

尤其注意这几个关键词:

product - sum

括号必须包含 +

从左找第一段连续空闲空间

覆盖数量相同取更小坐标

这几个条件一旦看漏,代码再快也容易挂。

另外 TikTok 的 CodeSignal OA 和不少大厂 OA 在题型上确实有一定重合,像模拟、滑动窗口、数组处理这些基础题,平时多练几遍,上手速度会快很多。

最近也在整理 Amazon、Microsoft、Google、Uber、Roblox、Garena、Shopee 等公司的 OA / VO 题目和面经。

正在准备 OA 或 VO 的,可以一起交流。

相关推荐
周小董1 分钟前
[1371]jdk管理工具
java·开发语言
Terra.K3 分钟前
高精度阶乘求和模板深度解析
开发语言·c++·算法
Hum8le9 分钟前
漏洞知识点《php伪协议》
开发语言·安全·web安全·php
青春逝如流水14 分钟前
Java 中线程的创建方式:从基础到现代
java·开发语言·多线程·ai文章
智码看视界15 分钟前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
铅笔小新z21 分钟前
【C语言】深入理解指针
c语言·开发语言
Peregrine91 小时前
C++ - > 类和对象
java·c++·算法
余醉 | dtminer1 小时前
56%的保护效应藏在乳腺密度里:Nat Commun 高分中介孟德尔随机化全 R 管线拆解(附核心图)
开发语言·r语言·孟德尔随机化
2501_933923251 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
Wang's Blog1 小时前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq