【问题标题】:I'm having trouble with this exercise on hacker rank please look我在这个关于黑客等级的练习中遇到了麻烦,请看
【发布时间】:2017-06-26 10:30:16
【问题描述】:

https://www.hackerrank.com/contests/projecteuler/challenges/euler001

这是我对 parseInt readline 语句感到困惑的问题 以及主要的 var n 语句..

当我运行我的代码时,它似乎最多计数十次,这可能是一个简单的问题,只是没有看到它,希望我能得到解释,这样我就可以继续处理项目欧拉问题

谢谢

    function main() {
     var t = parseInt(readLine());
     var sum = 0; 
     var arr = []; 

    for(var a0 = 0; a0 < t; a0++){
        var n = parseInt(readLine());
        for (var i = 0; i < n; i++)
            if (i % 3 === 0 || i % 5 === 0){
                arr.push(i);
                sum += i; 
            };
        console.log(arr);
    };

}

【问题讨论】:

  • 是我们还是的问题陈述?
  • 请更新您的问题名称,以便更好地描述您的具体问题。
  • 经过两处小修改,这段代码就可以通过测试了。当您尝试学习时,我不会告诉您要更改什么,但会制作两个可能为您指明正确方向的 cmets。首先,您需要将 3 和 5 的倍数的数字的 sum 记录到控制台。此外,您只对从 0 到 n 的当前值的数字的总和感兴趣,您不关心上一行

标签: javascript parsing installation int


【解决方案1】:

也许我没有完全理解你的问题。

parseInt 是一个 javascript 函数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

为您定义了 readLine() 函数,它将为您提供从标准输入中捕获的“下一行”。 所有(或大多数)hackerrank 问题通过标准输入提供问题的输入,并期望标准输出的结果。所以对于这个问题,hackerrank 创建了这个样板代码来读取那个输入。

   process.stdin.on('end', function () {
      input_stdin_array = input_stdin.split("\n");
      main();    
   });

正在填充用于 readLine() 函数的input_stdin_array 数组。

关于

当我运行我的代码时,它似乎最多计数两次

问题提到:

第一行包含 T,表示测试用例的数量。接下来是 T 行,每行包含一个整数 N。

所以您正在打印数组 T 次(默认测试用例为 2),所以您可能会看到“最多 10 次 2 次”

我希望这会有所帮助,也许您可​​以从几个https://www.hackerrank.com/domains/tutorials/30-days-of-code 挑战开始,这样您就可以更好地掌握如何解决这些问题。

问候

【讨论】:

    【解决方案2】:

    在第一个 for 循环之后声明数组。您为每个测试用例使用相同的数组,即使它仍然包含来自先前测试用例的数字。总和也一样。

    for(var a0 = 0; a0 < t; a0++) {
      var arr = [];
      var sum = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2020-10-05
      • 2017-08-25
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      相关资源
      最近更新 更多