【发布时间】:2021-11-23 17:38:18
【问题描述】:
我正在尝试解决以下问题。我认为我的解决方案运行良好。但是,我尝试上传解决方案的系统不接受我的解决方案。可能有些测试失败了。我可以知道我错过了什么吗?
问题是:
作为成功面试的最后一个问题,你的老板会给你几张纸,上面有数字,并要求你从这些数字中组成一个最大的数字。得到的数字将是你的薪水,所以你对最大化这个数字非常感兴趣。你怎么能这样做?
示例 1
输入:
2
21 2
输出:221
示例 2
输入:
3
23 39 92
输出:923923
我的解决方案是:
function MaxSallary(nums) {
let maxSize = Math.max(...nums).toString().length;
let newArr = [];
nums.map((num) => {
while (num.toString().length < maxSize) {
num = num.toString().concat(num.toString().split("").slice(-1)[0]);
}
newArr.push(Number(num));
});
finalArr = [];
while (newArr.length > 0) {
let minIndex = newArr.indexOf(Math.max(...newArr));
newArr.splice(minIndex, 1);
finalArr.push(...nums.splice(minIndex, 1));
}
return finalArr.join("");
}
console.log(MaxSallary([2, 12, 34, 11, 43, 21, 5]));
【问题讨论】:
-
我猜这样的自动化测试工具需要
MaxSallary将计算出的工资作为数字返回而不是打印出来?至于实际的算法本身,我觉得 sort+join 应该以某种方式完成。 -
我编辑了代码,但情况和以前一样。请给我你的解决方案好吗?
-
...编程语言除外
标签: javascript algorithm greedy