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.
Une façon est de passer par chaque élément à son tour et additionner les éléments à gauche et à droite, et de voir si la droite et la gauche sommes sont égales: si elles le sont, c'est un point d'équilibre, et vous pouvez arrêter; sinon, passer à l'élément suivant et essayez de nouveau. Essayez la mise en œuvre de cette première. Il ne sera pas efficace pour N grand, mais c'est un début.
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