У меня есть метод, который подсчитывает, сколько сумм из 3 элементов, равных 0, содержит массив. Мне нужна помощь в поиске пути , чтобы прекратить считать те же триплеты в цикле. Так, например, 1 + 3 - 4 = 0, но и 3 - 4 + 1 = 0.Here является метод:Поиск суммы в массиве
private static int counter(int A[])
{
int sum;
int e = A.length;
int count = 0;
for (int i=0; i<e; i++)
{
for (int j=i+1; j<e; j++)
{
sum=A[i]+A[j];
if(binarySearch(A,sum))
{
count++;
}
}
}
return count;
редактировать: Я должен использовать двоичный поиск (массив сортируется). Вот код BinarySearch:
private static boolean binarySearch(int A[],int y)
{
y=-y;
int max = A.length-1;
int min = 0;
int mid;
while (max>=min)
{
mid = (max+min)/2;
if (y==A[mid])
{
return true;
}
if (y<A[mid])
{
max=mid-1;
}
else
{
min=mid+1;
}
}
return false;
На самом деле ваш бинарный поиск не дает корректного вывода. – afzalex
Я сделал несколько изменений снова ... (binarySearch int ---> bolean). – DiVeRsi0n