问题;有一个网友,他在贴吧上的发帖数最多,而且占到了一半以上,要求我们设计算法找出这个传说中的水王。
这个问题很简单,只需要我们用二重循环吧每个id 对应出现的此书全部都算出来,在进行一次比较,求出次数最大值。
然而,老师说这不是最优的解法。老师给出我们提示:帖数占到一半以上,一个个的删。
最后得到解题思路。
一次循环两两比较,两两抵消。
package shuiwang; import java.util.Scanner; class tie { private int num; private String id; public tie() {}; public tie(int num,String id) { this.num=num; this.id=id; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getId() { return id; } public void setId(String id) { this.id = id; } } public class zhao { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc =new Scanner(System.in); System.out.println("请输入ID的个数:"); int a=sc.nextInt(); int b[]=new int[a]; System.out.println("请输入ID"); for(int i=0;i<a;i++) { b[i]=sc.nextInt(); } int water=b[0]; int k=1; for(int i=1;i<a;i++) { if(water!=b[i]) { k=k-1; if(k<=0) { water=b[i+1]; k=1; i++; } } else { water=b[i]; k=k+1; } } System.out.println("水王为"+water); } }