更快的函数内JavaScript函数调用算法 [英] Faster Algorithm for JavaScript function call within a function

查看:67
本文介绍了更快的函数内JavaScript函数调用算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了一个函数并调用了另一个函数,但是我的测试显示它没有时间优化。如何更快地制作以下代码?

I have written a function and called another function inside but my tests show that it is not time optimized. How can I make the following code faster?

    function maxSum(arr, range) {


        function sumAll(array1, myrange) {

            var total = 0;

            if (Array.isArray(myrange)) {
                for (var i = myrange[0]; i <= myrange[1]; i++) {

                    total += array1[i];
                }

                return total;
            } else return array1[myrange];
        }

        var mylist = [];
        var l = range.length;


        for (var n = 0; n < l; n++) {
            mylist.push(sumAll(arr, range[n]));
        }

        return Math.max.apply(null, mylist);


    }


推荐答案

基于@ MBo卓越优化的完整工作代码。这通过了的所有测试。 https://www.codewars.com/kata/the-maximum-sum-value-of-ranges-challenge-version/train/javascript ,我收集的是这个问题的来源。

Full working code based on @MBo's excellent optimization. This passes all the tests at https://www.codewars.com/kata/the-maximum-sum-value-of-ranges-challenge-version/train/javascript, which I gather is where this problem comes from.

function maxSum(arr, ranges) {
  var max = null;

  var sums = [];
  var sofar = 0;
  for (var i = 0; i <= arr.length; i++) {
    sums[i] = sofar;
    sofar += arr[i];
  }

  for (var i = 0; i < ranges.length; i++) {
    var sum = sums[ranges[i][1]+1] - sums[ranges[i][0]];
    if (max === null || sum > max) {
      max = sum;
    }
  }

  return max;
}

这篇关于更快的函数内JavaScript函数调用算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆