标签:
一、问题描述
1 class ZSW 2 { 3 public static void main(String[] args) 4 { 5 //int[] arr = {5,1,5,23,5,4,5,6,5,7,5};//水王id不相邻 6 int[] arr = {15,5,23,5,5,5,4,5,6,5,7,5}; 7 int c = 0; 8 int sw = 0; 9 for(int i=0;i<arr.length;i++) 10 { 11 if(c==0) 12 { 13 sw=arr[i]; 14 c++; 15 } 16 else 17 { 18 if(sw==arr[i]) //如果预设的水王id与当前id相同, 19 c++; //计数器就加一 20 else 21 c--; //如果不相等,当减到0的时候,就将当前的id作为水王 22 } 23 } 24 System.out.println(sw);//就将出现次数最多的id输出 25 } 26 }
四、实验截图
五、心得体会
找水王这道例子,是一道很典型的例子,有很多的解题思路,最好想的就是将所有id都按顺序排列起来,借助水王的发帖量
是超过一半的,因此二分之一处一定是水王,但是在课堂上,老师的意思是,不能用排序,只用一次遍历,就将水王找出来
,先将第一个id设为水王,再将与后面的id进行比较,如果相等,就让一个计数器加一,否则就让下一个id设为水王,这就是典型的匹配计数问题,
让出现次数最多的那个id返回出来。
标签:
原文地址:http://www.cnblogs.com/KevinBin/p/4451551.html