【问题标题】:JavaScript - Create a new method that finds the largest sum of consecutive entries in an ArrayJavaScript - 创建一个新方法来查找数组中连续条目的最大总和
【发布时间】:2015-07-24 03:35:50
【问题描述】:

我需要创建一个方法,在给定组大小的情况下找到数组中连续条目的最大总和。它应该采用array 和间隔大小作为输入,并且应该返回组中第一个条目的最大总和和索引。

例如,在下面的Array [1,1,1,1,1,1,1,2] 中,如果组大小为2,结果将是最大总和为 3,位置为 6。

如何完成这个?

谢谢!

【问题讨论】:

  • 你尝试过什么,你在哪里卡住了?而且,这是某种家庭作业吗?
  • 你知道 JSfiddle 吗?向我们展示您的第一次尝试!

标签: javascript arrays function methods integer


【解决方案1】:

由于您没有发布任何代码,因此我的回答将是一般性的。

最简单的方法是遍历数组并找到当前数字与 n 个连续数字的总和,直到 currentDigitIndex

在解决这个问题时,您应该考虑以下问题:如果数组长度等于 1 或 0,如果数组有负整数怎么办,如果组大小大于数组长度怎么办,如果您的数组有2或3个同样大的金额......

【讨论】:

    【解决方案2】:

    这是我想出的答案。它适用于大多数场景,而不是全部,因此可以改进答案。

    Array.prototype.maxGroupOf = function (size) {
      max = -Infinity;
      indexSpot = 0;
      len = this.length - size + 1;
      add = function (x, y) {
        return x + y;
      };
      this.forEach(function (x, y) {
        if (y > len) return;
        b = this.slice(y, y + size).reduce(add, 0);
        if (b > max) {
          max = b;
          indexSpot = y;
        }
      }, this);
      return {
        sum: max,
        position: indexSpot
      };
    };
    
    console.log([1, 1, 1, 1, 1, 1, 1, 2].maxGroupOf(2));
    
    ---Output---
    Object {sum: 3, position: 6}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多