一、设计思路:
每次删除两个不同的ID(不管是否包含“水王”的ID),那么,在剩下的ID列表中,“水王”
ID出现的次数仍然超过总数的一半。
所以即每次删除两个不同的ID,最后剩下的ID就是水王ID。
二、代码实现:
package 水王是谁; public class Shuiwangshishei { public static int jishu(int p[], int n) { int a=0,b=0; for(int i=0; i<n; ++i) { if(a==0 || b==0) { a=p[i]; b++; } else if(p[i]==a) b++; else b--; } return a;//此a即为“水王”的ID } } public static void main(String args[]) { //以13个数代表13个帖子,每个数字代表分别的发帖人 int a[]={1,3,3,4,3,5,2,2,3,7,3,3,3}; int n=a.length; int shuiwangID=jishu(a,n); System.out.println("水王是"+shuiwangID); } }
三、实验截图:
四、个人总结
本题的重点是将大问题转化成小问题,即把问题缩小化,在参考了网络资料后豁然开朗。思维还有待锻炼。