一、设计思路:因为需要只遍历一遍就要找到”水王“,所以不能通过排序算法。又因为”水王“发帖数占总帖子数的一半以上,所以可以通过计算差值的方法找出”水王“。设定一个变量n为水王与其他人发帖数量的差值。先假设水王的ID为第一个人的ID,开始遍历,若该帖子的ID与“水王“相同,则n+1,若该帖子的ID与“水王“不同,则n-1。当n<0时,“水王”的ID变为当前帖子的ID。遍历完成后,就找到“水王”的ID与水王发帖数与其他人发帖数的差值。
二、代码
public class main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String a[]=new String[]{"ab","ab","ab","b","ab","ab","abc","bc","ab","a"}; String b=a[0]; int i=0,n=0; for(i=0;i<10;i++) { if(a[i]==b) { n=n+1; } else { n=n-1; if(n<0) { b=a[i]; n=1;
} } } System.out.print(b); } }
三、结果截图
四、总结:这次这个问题实现并不是很难,难的是设计的算法如何只执行一次遍历。通过这种比较差值的方法可以比较快速的找到发帖最多的"水王",并且十分简单。