寻找小水王
Posted 枫棂叶澜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找小水王相关的知识,希望对你有一定的参考价值。
寻找发帖“水王”问题的扩展:有3个发帖很多的ID,他们的发帖数目都超过了帖子总数目N的1/4。你能从发帖ID列表中快速找出他们的ID吗?
(一)分析:
重复删除四个不同的ID,可能包含发帖数目超过总数1/4的ID,原先发帖比例大于1/4的ID所占比例仍然大于1/4,不断重复,把ID列表中的ID总数降低,可得到答案
(二)代码:
package test; public class LittleWater { static void Find(int ID[],int N,int water[]) { int nTimes[]={0,0,0}; for(int i=0;i<N;i++) { if(ID[i]==water[0]) {nTimes[0]++;} else if(ID[i]==water[1]) {nTimes[1]++;} else if(ID[i]==water[1]) {nTimes[2]++;} else if(nTimes[0]==0) { nTimes[0]=1; water[0]=ID[i]; } else if(nTimes[1]==0) { nTimes[1]=1; water[1]=ID[i]; } else if(nTimes[2]==0) { nTimes[2]=1; water[2]=ID[i]; } else { nTimes[0]--; nTimes[1]--; nTimes[2]--; } } System.out.println("三个符合条件的水王为:"); for(int i=0;i<3;i++) { System.out.print(water[i]+" "); } } public static void main(String args[]) { int ID[]={1,2,1,3,4,4,4,4,5,6,1,7,2,2,2,1}; int N=16; int water[] = {-1,-1,-1}; System.out.println("ID列表为:"); for(int i=0;i<N;i++) { System.out.print(ID[i]+" "); } System.out.println(); Find(ID,N,water); } }
(三)截图:
以上是关于寻找小水王的主要内容,如果未能解决你的问题,请参考以下文章