设计思想:
由题目我们知道了水王水贴的数目已经超过了一半,如果我采用了栈(数组)的思想。
首先把第一个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:
个人总结:
做这类题目时,一定要看好题目,仔细分析,用于尝试,错了没关系,
关键是要敢想,敢做,这样的话,就能够解决很多问题。