Un zéro-tableau indexé donné & Un équilibre index de ce tableau
Un zéro-tableau indexé Un composé de N entiers est donné. Un équilibre de l'index de ce tableau est un entier P tel que 0 ≤ P < N et la somme des éléments de la baisse des indices est égale à la somme des éléments de la hausse des indices, c'est à dire
A[0] + A[1] + ... + A[P−1] = A[P+1] + ... + A[N−2] + A[N−1].
Somme de zéro éléments est supposé être égal à 0. Cela peut se produire si P = 0 ou si P = N−1.
Par exemple, considérons le tableau suivant Un composé de N = 8 éléments:
A[0] = -1
A[1] = 3
A[2] = -4
A[3] = 5
A[4] = 1
A[5] = -6
A[6] = 2
A[7] = 1
P = 1 est un équilibre de l'index de ce tableau, parce que:
A[0] = −1 = A[2] + A[3] + A[4] + A[5] + A[6] + A[7]
P = 3 est un équilibre de l'index de ce tableau, parce que:
A[0] + A[1] + A[2] = −2 = A[4] + A[5] + A[6] + A[7]
P = 7 est aussi un équilibre de l'indice, parce que:
A[0] + A[1] + A[2] + A[3] + A[4] + A[5] + A[6] = 0
et il n'y a pas d'éléments avec des indices supérieurs à 7.
P = 8 n'est pas un équilibre de l'indice, car il ne remplit pas la condition 0 ≤ P < N.
Maintenant, je dois écrire une fonction:
int solution(int A[], int N);
que, étant donné un zéro-tableau indexé Un composé de N entiers, renvoie tout de son équilibre indices. La fonction doit retourner -1 si aucun équilibre index.
Par exemple, étant donné Un tableau illustré ci-dessus, la fonction peut retourner 1, 3 ou 7, comme expliqué ci-dessus.
Supposons que:
N is an integer within the range [0..100,000];
each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].
ici ont une certaine Complexité:
Elements of input arrays can be modified.
parce que les Éléments de l'entrée, les tableaux peuvent être modifiés. c'est pourquoi nous n'avons pas besoin spécifiquement de la limite de la table
Commencez avec un gauche et à droite de la somme. La gauche commence à zéro et la droite est la somme des éléments à partir de l'index de 1 à N-1. Boucle à travers le tableau de 1 à N-2 et ajouter les N-1 valeurs de la gauche et de soustraire le N+1 de la valeur à droite. Vérifiez si elles sont égales. Si donc le retour de la N d'autre de continuer. Vous aurez également besoin de vérifier si le droit initial somme est 0 au début et à la renvoyer 0 ou si la gauche de la somme est 0 à la fin et le retour de N-1.
Quelle langue? Par exemple, Java a ArrayList, mais le C et le C++ ne le font pas. La langue détermine quelles structures de données peuvent être facilement utilisés.
OriginalL'auteur Sirat Binte Siddique | 2015-10-27
Vous devez vous connecter pour publier un commentaire.
100 Score en Javascript
OriginalL'auteur Eko Bayu
100% marqué avec c#
excellente réponse!!
OriginalL'auteur Bashir
100% Java
}
OriginalL'auteur Asiri Liyana Arachchi
En C++ (parce que c'était l'une des étiquettes originales, mais on dirait qu'il a été supprimé...)
si vous voulez voir tous les indices...
Je trouve bizarre qu'il n'a pas besoin de retourner un tableau d'indices; cela dit, si vous en avez besoin qui n'est pas trop difficile à mettre en œuvre avec une légère modification
OriginalL'auteur Kanga_Roo
La réponse est posté dans ce blog: http://blog.codility.com/2011/03/solutions-for-task-equi.html. Afin d'éviter de O(N^2) et de réaliser de O(N) performance:
L'observation essentielle pour le meilleur temps de course est de mettre à jour la gauche/droite des sommes en temps constant au lieu de recalculer eux à partir de l'éraflure.
OriginalL'auteur chris hu
Ici est la java équivalent
Voici comment vous pourriez tester
OriginalL'auteur craftsmannadeem
Dynamique de l'approche de la programmation. O(N) fois. O(2N) de l'espace.
Par la suite de boucles et de comparer chaque index dans tableBefore et tableAfter. Si c'est égal, c'est votre équilibre index.
}
OriginalL'auteur Hilary Brobbey
Vous pouvez utiliser les sommes approche pour résoudre ce problème. Chaque fois que la somme de gauche = somme de droite, vous avez un point d'équilibre.
OriginalL'auteur Shayan C
La simple approche semble la manière suivante.
Tout d'abord, vous devez calculer la somme de tous les éléments de la matrice
Par exemple, si vous avez le tableau en C++
ensuite, vous pouvez utiliser un simple boucle pour calculer la somme ou de l'algorithme standard
std::accumulate
déclaré dans l'en-tête<numeric>
Par exemple
La somme des éléments de la gauche de la sous-suite au départ est égal à zéro
Ensuite, vous pouvez appliquer l'algorithme standard
std::find_if
avec une lambda-expression ou encore écrire un ordinaire boucle comme par exempleLe résultat sera
OriginalL'auteur Vlad from Moscow
Ma réponse à Swift 3.0
}
OriginalL'auteur Cathal
en python 🙂
OriginalL'auteur David Castro
100% - PHP
de sortie:
OriginalL'auteur yoeunes
Solution Simple :
étapes :
1) Chèque (Tableau = null)
Then Print “Pas de point d'Équilibre présent que la matrice est NULLE”
2) Chèque (longueur de la pile = 1)
Then Print "Equilibrium_Index = 0" => un seul élément présent dans la gamme qui est le point d'équilibre
3) Chèque (Longueur de Tableau > 1)
Boucle (Index de Tableau 1 to Length-1)
Considérer chaque index en tant que point d'équilibre
Vérifier (somme des éléments ci-dessous point d'équilibre = somme des éléments ci-dessus équilibre poin)
Oui => equilibrium_index = i (rupture de la boucle)
Pas => continuer à l'étape 3 de la prochaine valeur de compteur de boucle
4) si le contrôle n'est pas retourné à partir de l'étape 3 signifie que le point d'équilibre n'est pas présent dans la boucle
Then Print "Pas de point d'équilibre présent dans le tableau."
Veuillez trouver ci-dessous le code pour la même :
OriginalL'auteur NinjaNick
Pour les paresseux et les développeurs PHP:
Complexité
O(N)
OriginalL'auteur Matija
100 Score en Ruby
OriginalL'auteur Pulkit Agarwal