背景-我参加了一个在线编码测试,遇到了类似的问题,与隐藏的评分标准相比,我的成绩相当差,我希望能有另一双眼睛来看它,也许能帮助指出我的一些错误。
练习题-
任务:给定一个整数,将数字5注入其中,以获得最大可能的整数条件:(-80000...80000)需要处理的范围
预期输入: int
预期输出: int
测试用例:-999 -> -5999
80 -> 850 var lrgInt = function(num) {
var stringInt = num.toString();
for (let i = 0; i < stringInt.length; i++) {
if (stringInt.charAt(i) === "-") {
return parseInt([stringInt.slice(0, 1), '5', stringInt.slice(1)].join(''));
}else if (stringInt.charAt(i) < 5) {
return parseInt([stringInt.slice(0, i), '5', stringInt.slice(i)].join(''));
}
}
return parseInt([stringInt.slice(0, stringInt.length), '5', stringInt.slice(stringInt.length)].join(''));
};任务:确定在符合条件的数字上完成的操作次数,将其减少到0。
条件:
预期输入: int
预期输出: int
var operations = 0;
var numberOfSteps = function(num) {
if (num === 0){
return operations;
}else if (num % 2 == 0) {
operations++;
return numberOfSteps(num/2);
} else {
operations++;
return numberOfSteps(num-1);
}
};发布于 2020-03-28 23:44:48
对于第二个问题,您可以在没有全局计数器的情况下将递归结果与调整后的数字相加1。
function numberOfSteps(number) {
if (!number) return 0;
if (number % 2) return 1 + numberOfSteps(number - 1);
return 1 + numberOfSteps(number / 2);
}
console.log(numberOfSteps(5)); // 5 4 2 1 0
发布于 2020-03-28 23:49:54
对于第一个问题,我们观察到,如果数字是正数,我们想要在第一个小于5的数字之前注入5,但是如果它是负数,那么我们想要在第一个大于5的数字之前注入它。对于第二个问题,我们可以只使用一个简单的while循环。
function largestNum(num) {
if (num == 0) {
// this edge case is weird but I'm assuming this is what they want
return 50;
}
var negative = num < 0;
var numAsStr = Math.abs(num).toString();
var inj = -1;
for (var i = 0; i < numAsStr.length; i++) {
var cur = parseInt(numAsStr[i], 10);
if ((!negative && cur < 5) || (negative && cur > 5)) {
// we found a place to inject, break
inj = i;
break;
}
}
if (inj == -1) {
// didn't inject anywhere so inject at the end
inj = numAsStr.length;
}
return (
(negative ? -1 : 1) *
parseInt(numAsStr.substr(0, inj) + "5" + numAsStr.substr(inj))
);
}
function numSteps(num) {
var steps = 0;
while (num != 0) {
if (num % 2) {
// it's odd
num--;
} else {
num /= 2;
}
steps++;
}
return steps;
}https://stackoverflow.com/questions/60902818
复制相似问题