Problème
Count the pairs of different positions i < j in numbers where numbers[i] + numbers[j] equals target. Use two nested loops.
Implement count_pairs_with_sum(numbers, target).
Input
numbers: The list of integers. target: The sum to look for.
Output
Return the number of pairs.
Contraintes
0 ≤ length of numbers ≤ 500; -10,000 ≤ each number, target ≤ 10,000
Exemples
Entrée :
target = 6
numbers = [1, 5, 3, 3, 4]
Sortie attendue :
expected = 2
Entrée :
long long target = 6;
std::vector<long long> numbers = {1, 5, 3, 3, 4};
Sortie attendue :
long long expected = 2;
Entrée :
long target = 6;
long[] numbers = new long[] {1, 5, 3, 3, 4};
Sortie attendue :
long expected = 2;
Explication
1 + 5, 3 + 3 (the two 3s at different positions) make 6: 2 pairs.
Entrée :
target = 4
numbers = [2, 2, 2]
Sortie attendue :
expected = 3
Entrée :
long long target = 4;
std::vector<long long> numbers = {2, 2, 2};
Sortie attendue :
long long expected = 3;
Entrée :
long target = 4;
long[] numbers = new long[] {2, 2, 2};
Sortie attendue :
long expected = 3;
Explication
Every pair of the three 2s sums to 4: positions (0,1), (0,2), (1,2) = 3 pairs.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Vérifie chaque paire antérieure-postérieure et vois si leur somme correspond à la cible.
Indice 2
Une double boucle simple suffit, car la taille d’entrée est petite.
Indice 3
Fais attention à compter chaque paire une seule fois, avec des positions où i est inférieur à j.
Complexité attendue
temps O(n^2), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.