Meta OA 面试真题解析:Maximum Swap(最大交换)

18次阅读
没有评论

Given an integer, swap at most one pair of digits to make the largest possible integer.

Example:

43183 -> 83143
Swap 4 and 8.

这道题要求你只允许交换一次数字中的一对位置,使结果尽可能大。核心思路是从左到右寻找可以被更大的右侧数字替换的位置:先记录每个数字最后一次出现的位置,然后从高位开始检查,若当前位右边存在更大的数字,就把当前位与该数字最靠右的出现位置交换,这样能保证最高位尽可能大,同时把较小的数字放到后面。时间复杂度可以做到 O(n),适合用数组记录每个数字的位置来实现。

正文完
 0