TikTok Coding Interview 真题:小于 N 的最大数字|Largest Number Smaller Than N

这是一道 TikTok 真实 Coding 面试题,主要考察贪心算法(Greedy Algorithm)以及回溯(Backtracking)的应用。

Original Question (English)

Given an integer n and a set of digits A, find the largest number strictly smaller than n that can be formed using only digits from A.

Digits can be reused multiple times.

Example:

Input:

  • n = 23121
  • A = {2, 4, 9}

Output: 22999

题目中文

给定一个整数 n 和一个数字集合 A,要求仅使用集合 A 中的数字,组成一个严格小于 n 的最大整数。

集合中的数字可以重复使用。

示例:

输入:n = 23121,A = {2, 4, 9}

输出:22999

Solution Approach(解题思路)

这道题的核心是贪心算法结合回溯。

从最高位开始,尽量选择集合中最大的合法数字。如果当前位选择的数字小于 n 对应位置的数字,后面的所有位置就可以直接填入集合中的最大数字。

以 23121 为例,第一位选择 2,第二位原本是 3,但集合中没有 3,因此选择小于 3 的最大数字 2。

此时前两位已经确定为 22,剩余三位全部填入最大的数字 9,最终得到 22999。

如果某一位无法找到合法数字,就需要回溯到前一位,尝试更小的数字。

如果无法构造相同位数的合法结果,还需要考虑使用更少位数的情况。

Key Takeaway

这道 TikTok 面试题看起来是简单的数字构造问题,实际需要处理贪心选择失败后的回溯,以及严格小于 n 的边界条件。

关键是找到第一个能够使结果小于 n 的位置,再将后续数字全部最大化。

CSOAHELP 持续整理真实科技公司面试题,也设计贴近业务场景的练习题,提供 Mock Interview、系统设计辅导和实时面试思路支持。

我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *