找水王

设计思想:

  由题目我们知道了水王水贴的数目已经超过了一半,如果我采用了栈(数组)的思想。

首先把第一个ID放进数组中,接着看下一个ID,如果与栈的顶层ID相同就继续放进栈里,

如果不同,顶层栈ID就出栈(和不同的ID同归于尽了),然后接着看下一个ID。

由于没有任何人可以消耗过水王,所以最终栈里剩的一定都是水王的ID,重复上面的操作,

再把栈里的第一个ID(由于栈里所有的ID都是水王的了,所以随便取一个就行了)输出来,

就把水王找出来了。

代码展示: 

//作者:徐浩军 日期:17/4/18
//找出水王

public
class Water { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a[]={2,3,4,4,4,4,45,1}; int b[]=new int [10]; int number=-1; int n=0; for(int i=0;i<a.length;i++){ if(number==-1){ number++; b[number]=a[i]; } else{ if(b[number]==a[i]){ number++; b[number]=a[i]; } else{ number--; } } } System.out.println(b[0]); } }

结果截图:

所有发帖人的 ID:

  

水王的ID:

  

个人总结:

  做这类题目时,一定要看好题目,仔细分析,用于尝试,错了没关系,

关键是要敢想,敢做,这样的话,就能够解决很多问题。

原文地址:https://www.cnblogs.com/haojun/p/6729526.html