Executando verificação de segurança...
1

Interview question of the week #445

Se você gosta de desafios de lógica e algoritmos para aquecer os motores durante a semana, provavelmente conhece a newsletter da Cassidoo, onde toda semana ela envia uma questão de entrevista técnica.

Nesse meu repositório é possível encontrar as minhas soluções dos desafios anteriores: ebdonato/cassidoo-questions

Questão da Semana

Dado um vetor de inteiros, encontre o subvetor contíguo que possui a maior soma e retorne essa soma. Um subvetor deve conter pelo menos um elemento. Se todos os elementos forem negativos, retorne o maior (menos negativo) valor.

Exemplos

> maxSubarraySum([-2, 1, -3, 4, -1, 2, 1, -5, 4])
6
> maxSubarraySum([5])
5
> maxSubarraySum([-1, -2, -3, -4])
-1
> maxSubarraySum([5, 4, -1, 7, 8])
23

Minha Solução

/**
 * Finds the maximum sum of a contiguous subarray in an array of numbers.
 * Implements Kadane's algorithm.
 * @param arr - The array of numbers to search
 * @returns The maximum sum of a contiguous subarray
 */
export function maxSubarraySum(arr: number[]): number {
  let cur = arr[0];

  return arr.reduce(
    (max, v, i) =>
      i === 0 ? max : ((cur = Math.max(v, cur + v)), Math.max(max, cur)),
    arr[0],
  );
}
Carregando publicação patrocinada...