-2
public class rough{
 public static int arrMajority1(int A[]){
  int n = A.length;
  int c = 1;
  for(int i=0;i>A.length;i++){

    for(int j=i+1;j<A.length;j++)
     if (A[i]==A[j])
      c=c+1;
      if (c>(A.length/2)){
      return A[i];
      }
     }
     return -1;
    }
    public static void main(String[] args){
     int A[] = new int [] {5,5,8,7,5};
    // int arrMajority1 = A[0];
     System.out.println(" " + arrMajority1(A));
    }
}

大小为 N 的数组 A 中的多数元素是出现超过 N/2 次的元素。例如 (3,3,4,2,4,4,2,4,4) 有一个多数元素 (4),而数组 (3,3,4,2,4,4,2,4) 有没有多数元素。

4

1 回答 1

1

如果问题是问这段代码有什么问题,我认为主要问题是外for循环中的条件。我认为应该是:

for(int i = 0; i < A.length; i++) {

(注意<而不是>)。

另一个问题是您可能需要c在外循环的每次迭代之前重置计数器for(否则,它不会保留正在检查的当前元素的计数)。所以尝试将语句移动到内部循环int c = 1;上方的空白行。for

于 2013-02-14T20:07:03.020 回答