首先分析水王的特点,根据他的特点进行下手;
已知水王发帖数肯定超过总帖数的一半,我们可以充分利用这个条件,
那么如何体现出发帖数超过总帖数的一半并且遍历次数最少呢:
这里应用抵消法来查找水王,。因为水王发帖数大于一半,无论怎么抵消,都不会小于等于0,剩下最后的id即为水王
源代码:
import java.util.Scanner; public class shui { public static void main(String[] args) { Scanner sca=new Scanner(System.in); System.out.println("请输入帖子数量:"); int count=sca.nextInt(); int a[]=new int[count]; System.out.println("请输入帖子id:"); for(int i=0;i<count;i++) { a[i]=sca.nextInt(); } max(a); } public static void max(int a[]) {//寻找水王 int c=1;//j为某个ID出现的次数 int max;//假设max为(水王ID)出现的次数 max=a[0];//假设第一个数为水王ID for(int i=1;i<a.length;i++) { if(max!=a[i]) { c=c-1; if(c<=0) //如果j<=0,则表示max不是水王ID。因为水王发帖数大于一半,无论怎么抵消,都不会小于等于0 { max=a[i+1]; //所有要换其他ID为水王的ID c=1; //重新定义水王ID出现次数 i++; } } else { max=a[i]; c=c+1;//统计水王帖子数 } } System.out.println("水王的id为: "+max); } }