JAVA求数组中众数_查找数组众数

根据题目中众数的定义,给的数据中一定会出现次数超过n/2的数,那么如果数组中一次删去两个不同的数,那么最后剩下来的数一定是众数,提供一种不用排序,时间复杂度O(n),空间复杂度O(1)的AC方法 import java.util.Scanner;

import static java.lang.System.in;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(in);

String[] str = sc.nextLine().replace("[", "").replace("]", "").split(",");

int[] data = new int[str.length];

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

data[i] = Integer.parseInt(str[i]);

}

if (data.length == 1 || data.length == 2) {

System.out.println(data[0]);

return;

}

int hp = 0;

int flag = data[0];

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

if (hp == 0) {

flag = data[i];

hp++;

} else if (data[i] == flag) {

hp++;

} else{

hp--;

}

}

System.out.println(flag);

}

}

你可能感兴趣的:(JAVA求数组中众数)