【发布时间】:2014-10-21 16:07:27
【问题描述】:
我有一个方法可以计算数组包含多少个等于 0 的 3 个元素的总和。我需要帮助找到停止计算循环中相同的三胞胎的方法。比如1 + 3 - 4 = 0,还有3 - 4 +1 = 0。方法如下:
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;
【问题讨论】:
-
实际上你的 binarySearch 没有给出正确的输出。
-
我又做了一些编辑...(binarySearch int --->bolean)。
标签: java arrays binary-search