我的Hackerrank挑战Service Lane的代码不起作用

时间:2016-06-09 11:07:32

标签: javascript

我正在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

2 个答案:

答案 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);
}