我正在www.hackerrank.com进行挑战,名为Service Lane https://www.hackerrank.com/challenges/service-lane。我仔细检查了我的代码,但在某些情况下仍然是错误的。这是我的代码:(在Javascript中)
function main() {
var n_temp = readLine().split(' '), i, s;
width = readLine().split(' ');
for(var a0 = 0; a0 < n_temp[1]; a0++){
var i_temp = readLine().split(' '); s = 3;
for (i=i_temp[0];i<=i_temp[1];i++) {s = Math.min(s,width[i]); if (s == 1) break;}
console.log(s);
}
}
挑战有一个数字列表(存储在 width 中,它们的值介于1和3之间)和一些测试用例(包括起始编号: i_temp [0] 和结束编号: i_temp [1。] ,两者都包括在内)。任务是获取元素中从 i_temp [0] 到 i_temp [1。] width 的元素中的最小数字。
以下是其中一项不起作用的案例:
Input
Output
该代码有什么问题?它在某些情况下成功运行。谢谢你的帮助:D
答案 0 :(得分:0)
试试这个:
function main() {
var N, n, path, i, j, it, res;
[N, n] = readLine().split(' ').map(Number);
var path = readLine().split(' ').map(Number);
for (var it = 0; it < n; it++) {
[i, j] = readLine().split(' ').map(Number);
res = Math.min.apply(null, path.slice(i, j+1));
console.log(res);
}
}
答案 1 :(得分:0)
你需要将字符串解析为Integer.Otherwise比较可能会在某些输入上失败。我已在下面测试并成功。
var n_temp = readLine().split(' '), i, s;
width = readLine().split(' ');
for(var a0 = 0; a0 < n_temp[1]; a0++){
var i_temp = readLine().split(' '); s = 3;
for (i=parseInt(i_temp[0]);i<=parseInt(i_temp[1]);i++) {s = Math.min(s,width[i]); if (s == 1) break;}
console.log(s);
}