Nodejs Array Max Sub Array maxSubArrayNonContigious()

Here you can find the source of maxSubArrayNonContigious()

Method Source Code

/**/*  w w  w .  j av a2s .  c o  m*/
 * Find the maximum possible sum of a non-contiguous subarray
 * @returns {Number}
 */
Array.prototype.maxSubArrayNonContigious = Array.prototype.maxSubArrayNonContigious || function () {
  let maxElement = null;
  let sum = null;

  this.forEach(element => {
    maxElement = maxElement === null || element > maxElement ? element : maxElement;
    sum += element > 0 ? element : 0;
  });

  return sum > 0 ? sum : maxElement;
};

Related

  1. maxSubArray()
    'use strict';
    Array.prototype.maxSubArray = function() {
      let maxToIndex = null;
      let currentMax = null;
      let maxElement = null;
      this.forEach((element) => {
        maxToIndex = Math.max(0, maxToIndex + element);
        currentMax = Math.max(currentMax, maxToIndex);
        maxElement = maxElement == null || element > maxElement ? element : maxElement;
    ...
    
  2. maxSubArray()
    'use strict';
    Array.prototype.maxSubArray = Array.prototype.maxSubArray || function () {
      let maxToIndex = null;
      let currentMax = null;
      let maxElement = null;
      this.forEach(element => {
        maxToIndex = Math.max(0, maxToIndex + element);
        currentMax = Math.max(currentMax, maxToIndex);
        maxElement = maxElement === null || element > maxElement ? element : maxElement;
    ...
    
  3. maxSubArrayNonContigious()
    Array.prototype.maxSubArrayNonContigious = function() {
      let maxElement = null;
      let sum = null;
      this.forEach((element) => {
        maxElement = maxElement == null || element > maxElement ? element : maxElement;
        sum += element > 0 ? element : 0;
      });
      return sum > 0 ? sum : maxElement;
    };
    ...