Запрещение задачи:
Я работаю над проблемой, когда мне нужно найти количество пар ((i, j)) такого, что: < /p>- (i
(a + a [j] = 2^x) где ( x) является целым числом.
Поскольку ответ может быть большим, его следует возвращать модулю (10^9 + 7).
ограничения: < /strong> < /h4>
[*] (1
Первая строка содержит целое число, n [/b], обозначающее количество элементов в a .
< li> Каждая из следующих линий n (где 0 ≤ i
< /ul>
Образец тестовых случаев < /h3>
input < /strong> < /th>
output < /strong> < /th>
объяснение < /strong> < /th>
< /tr>
< /thead>
< tr>
4
1
15
2
7 < /td>
2 < /td>
упорядоченные пары, удовлетворяющие условию:
1. (1, 2)
2. (1, 4) < /td>
< /tr>
5
1
2
3
4
5 < /td>
2 < /td>
упорядоченные пары, удовлетворяющие условию:
1. (1, 3)
2. (3, 5) < /td>
< /tr>
5
2
2
2
2
2 < /td>
10 < /td>
Все пары ((i, j)) удовлетворяют условию. < /Td>
Проблема:
< P> Это решение дает неверные результаты для определенных случаев. Тестовые примеры пример дают правильный выход, но другие тестовые случаи заблокированы и дают неправильный выход.
Что не так с моим подходом? ol>
Любая справка была бы очень оценена! hashmap для хранения частоты элементов и итерации над уникальными элементами, чтобы проверить, существует ли их комплемент (которая образует мощность 2 суммы).
Вот моя реализация : < /p>
Код: Выделить всё
import java.io.*;
import java.util.*;
public class Solution {
public static int twiceMatch(Integer[] A) {
long MOD = 1000000007;
HashMap mp = new HashMap();
for (int i = 0; i < A.length; i++) {
mp.put(A[i], mp.getOrDefault(A[i], 0) + 1);
}
long cnt = 0;
for (Map.Entry entry : mp.entrySet()) {
int key = entry.getKey();
int closePower = 1;
while (closePower
Подробнее здесь: [url]https://stackoverflow.com/questions/79393815/issue-with-counting-pairs-matching-2[/url]