Qu'est-ce qu'un algorithme rapide pour trouver la longueur de la plus grande séquence croissante monotone dans un tableau d'entiers.Trouver la longueur de la plus grande séquence croissante
Répondre
De Wikipedia: Longest increasing subsequence (O (n log n))
L = 0
for i = 1, 2, ... n:
binary search for the largest positive j ≤ L such that X[M[j]] < X[i] (or set j = 0 if no such value exists)
P[i] = M[j]
if j == L or X[i] < X[M[j+1]]:
M[j+1] = i
L = max(L, j+1)
Je ne sais pas ce que vous entendez par l'algorithme, mais voici une idée.
Si le tableau est trié par défaut (c'est-à-dire lorsque la création d'une valeur de tableau est terminée à la fin du fait qu'il s'agit d'une séquence croissante), récupérez la dernière valeur du tableau.
Si ce n'est pas le cas, créez une nouvelle variable et faites une boucle dans le tableau en affectant la valeur courante à la boucle si elle est plus grande que celle stockée dans la variable temporaire.
Comme le suggère Mehrdad, LIS est au moins proche de ce dont vous avez besoin. Ceci est implémenté le plus efficacement en utilisant programmation dynamique/memoization. Si vous êtes intéressé par des choses comme ça, je vous recommande de la tête sur TopCoder
vous pouvez utiliser la programmation dynamique pour résoudre cette solution problème.Le pour ce problème en utilisant la programmation dynamique est ici:
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg
- 1. Plus longue séquence croissante de noeuds dans un graphique
- 2. Algorithme pour trouver la longueur de la plus longue séquence de blancs dans une chaîne donnée
- 3. Trouver la sous-séquence avec la plus grande somme d'éléments dans un tableau
- 4. Linq pour trouver une paire de points avec la plus grande longueur?
- 5. Trouver plus grand-séquence commune
- 6. La longueur de la plus longue sous-séquence commune de deux chaînes
- 7. Impact de la définition de la colonne VARCHAR2 avec une longueur plus grande
- 8. Trouver la plus longue séquence dans un tableau Java
- 9. Trouver la plus longue séquence d'une valeur dans une table
- 10. Trouver la plus grande valeur du sous-ensemble du tableau
- 11. Comment trouver la deuxième plus grande valeur d'une table.?
- 12. Imprime la ligne avec la plus grande longueur, la ligne avec la plus haute somme de valeurs ASCII, ou la ligne avec le plus grand nombre de mots
- 13. requête pour obtenir 3ème plus grande quantité et 2ème plus grande quantité de la table
- 14. Run-Time Actions de longueur dynamique liste pour la séquence
- 15. Trouver la chaîne la plus longue dans plusieurs textes
- 16. La plus grande taille de Windows Cursor
- 17. Python: fonction semblable à un zip qui permet d'obtenir des pads de la plus grande longueur?
- 18. Trouver la longueur de tableau 2D?
- 19. MySQL comptant la plus grande valeur
- 20. Trouver la longueur de la plus longue rangée dans une colonne dans Oracle
- 21. Trouver la plus haute clé
- 22. La longueur des données renvoyées par CGImageGetDataProvider est plus grande que prévu
- 23. python: déterminer la longueur de la séquence d'éléments égaux dans la liste
- 24. La plus grande colonne non nulle
- 25. Trouver la plus proche
- 26. Java: La plus longue séquence commune
- 27. requête pour trouver la première et la plus grande valeur SECOND d'un groupe
- 28. Comment trouver la longueur d'un LPCSTR
- 29. Trouver la longueur MP3 en C#
- 30. Comment trouver la longueur de la chaîne dans un champ?
En ce qui concerne la réponse ci-dessus, en faisant L = 0 ne fonctionnerait pas si le tableau se compose uniquement d'entiers négatifs (comme 0 est> -1). Par conséquent, vous pouvez définir L sur la première valeur du tableau s'il existe. –
il est non trié. ainsi par exemple si vous avez 0 2 4 5 3 6 1 9 8 vous obtiendrez 0 2 4 5 – SuperString