Encontre o subarray mais amplo com a soma especificada (fatia do array)

Eu tropecei recentemente em um problema modificado de subarray de soma máxima , aqui sabemos a soma (digamos que seja S=2), mas precisamos encontrar uma fatia mais longa da matriz que produza essa soma exata (as médias mais longas devem ter o maior número de elementos)

Então, para matriz de entrada

A = [1, 0, -1, 1, 1, -1, -1]

Encontramos 2 fatias: A(0:4)porque sum(1,0,-1,1,1)é 2 e A(3:4)porque sum(1,1)também é2

Mas o A(0:4)subarray é o mais longo, portanto, seu comprimento 5é a resposta aqui ..

Encontrei a maioria das soluções onde não O (n) porque usavam 2 loops em vez de um ou alguns pacotes para coleções. Essa variante de problema é possível de resolver com complexidade O (n)?

Estou interessado principalmente em uma solução escrita em Java, mas não sei qual algoritmo modelar.

assert solution(new int[] { 1, 0, -1, 1, 1, -1, -1 }, 2) == 5;

Cumprimentos

Resposta 1

Eu tenho um aplicativo da web com a seguinte estrutura: src + main + - + java + recursos + webapp + - + WEB-INF + static O diretório estático é o servidor por org.apache.catalina.servlets ....

Eu tenho uma classe, Estudante com este construtor. public Student (nome da string, int idade, notas de Map <String, Inteiro>) {this.setName (name); this.setAge (idade); this.setGrades (notas); } ...

Como posso usar o geckodriver para a versão beta do selenium webdriver 3.0? Quando instanciamos o Firefox, como: Driver WebDriver = new FirefoxDriver (); System.setProperty ("webdriver.gecko.driver", "// lib // ...

Eu defini o Comparator na classe Mobile para comparação. Comparando critérios, usei o campo id do Mobile. O Eclipse mostra um erro para o primeiro (hashSet) :( erro de sintaxe) enquanto para o conjunto de árvores ...