【发布时间】:2013-07-13 12:25:59
【问题描述】:
我正在尝试找出数组广告中的多数元素,当我检查小于大小的元素时,此代码运行良好。但是只要任何元素等于数组的大小,它就会给我 arrayindexoutofbound 异常。请让我知道如何解决这个问题。
public class MajorityElement {
public static void main(String[] args) {
int a[]={2,2,7,5,2,2,6};
printMajority(a, 7);
}
//1st condition to check if element is in majority.
public static int findCandidate(int a[], int size){
int maj_index=0;
int count =1;
int i;
size=a.length;
for(i=1;i<a.length;i++ ){
if(a[maj_index]==a[i])
count++;
else
count--;
if(count==0)
{
maj_index=a[i]; //current element takes max_inex position.
count =1;
}
}
return a[maj_index];
}
public static boolean isMajority(int a[], int size, int cand){
int i, count =0;
for(i=0;i<a.length;i++)
{
if(a[i]==cand)
count++;
}
if(count>size/2){
return true;
}
else {
return false;
}
}
private static void printMajority(int a[],int size){
size=a.length;
int cand=findCandidate( a, 7);
if(isMajority(a,size,cand))
System.out.printf("%d",cand);
else
System.out.println("no such element as majority");
}
}
【问题讨论】:
-
您能否通过示例输入和输出解释您想要实现的目标?我不知道“多数元素”是什么意思,而且鉴于代码是错误的,通过阅读代码很难猜出它的含义。
-
也许
maj_index=a[i];应该是maj_index=i; -
不要写
if (count>size/2) { return true; } else { return false; }。写return count > size / 2; -
@JBNizet geeksforgeeks.org/majority-element 这可能是一个学校作业。
-
对了,“多数元素”是什么意思??
标签: java