trouver le début et la fin de l'index pour un max de sous tableau
public static void main(String[] args) {
int arr[]= {0,-1,2,-3,5,9,-5,10};
int max_ending_here=0;
int max_so_far=0;
int start =0;
int end=0;
for(int i=0;i< arr.length;i++)
{
max_ending_here=max_ending_here+arr[i];
if(max_ending_here<0)
{
max_ending_here=0;
}
if(max_so_far<max_ending_here){
max_so_far=max_ending_here;
}
}
System.out.println(max_so_far);
}
}
ce programme génère le max de la somme de sous-tableau ..dans ce cas, les 19,à l'aide de {5,9,-5,10}..
maintenant, je dois trouver le début et la fin de l'index de ce tableau ..comment dois-je faire ??
Whats est votre sortie attendue pour cet? La Question n'est pas claire
Aller pour le kadane algorithme.. maximale de la sous-matrice linéaire de la complexité...
Aller pour le kadane algorithme.. maximale de la sous-matrice linéaire de la complexité...
OriginalL'auteur user1896796 | 2013-01-06
Vous devez vous connecter pour publier un commentaire.
Comme Ce
Ok, donc, il y a un problème dans la solution ci-dessus comme l'a souligné Steve P. C'est une autre solution qui devrait fonctionner pour tous les
list = [631, -583, -975]
Hey. Juste assez. J'ai ajouté une autre solution qui fonctionne pour tous les
N'est pas votre deuxième solution est l'heure de la complexité est O(n2) ?
Yep. Probablement à réviser que pour faire mieux ...
OriginalL'auteur cjds
C'est un programme en C pour résoudre ce problème. Je pense que la logique est la même pour toutes les langues, donc je l'ai posté cette réponse.
très belle solution
OriginalL'auteur Kishore Kumar
Fixation Carl Saldanha solution:
OriginalL'auteur Lem0n
La question est un peu floue mais je devine un "sous-ensemble" est la moitié de l'arr objet.
Une lame de façon à le faire comme ceci
J'ai cette image peut ne pas fonctionner si l'arr contient un nombre impair d'éléments.
Si vous souhaitez accéder à un niveau plus élevé de soutien convertir le primvate tableaux à un objet de la Liste d'
Cette façon, vous avez accès à un ensemble des fonctionnalités de l'objet.
Aussi, si vous avez le temps, jetez un oeil à l'ordre supérieur fonctionnel appelé réduire. Vous aurez besoin d'une bibliothèque qui prend en charge la programmation fonctionnelle. La goyave ou lambdaJ pourrait avoir une réduction de la méthode. Je sais que apache commons manque un, sauf si vous voulez pirater ensemble.
OriginalL'auteur Dan
Voici algorithme pour maxsubarray:
OriginalL'auteur Saurabh Jain
Voici une solution en python - Kadane de l'algorithme de étendu pour imprimer le début/la fin de l'index
OriginalL'auteur sysuser
OriginalL'auteur Nitin Jha
OriginalL'auteur Kartik
La seule chose que j'ai à ajouter (à plusieurs solutions posté ici) est de couvrir les cas que tous les entiers sont négatifs, auquel cas le max de sous tableau sera juste le max élément. Assez facile à faire.. suffit de suivre max élément et l'indice de l'indice de la puissance maximum de l'élément que vous itérer dessus. Si le max élément est négatif, il retourne l'indice de la place.
Il y a aussi le cas de débordement pour éventuellement gérer. J'ai vu algorithme de tests qui prennent de compte.. c'est à dire, supposons exemple maxint a été l'un des éléments et vous avez tenté d'ajouter. Je crois que certains de la Codility (codage interview concasseur) tests d'en tenir compte.
OriginalL'auteur crig
Un O(n) en solution dans C serait :-
OriginalL'auteur Dipayan
Voici une solution en utilisant Kadane l'Algorithme de
OriginalL'auteur K. Ali