找水王

 

 

 

//水王的思想就是抵消的思想,如果能想到抵消的思想, 还会使用栈或者list之类的,就会非常简单,因为成为水王的条件是发送信息的数量超过一半,也就意味着他跟其他的数抵消之后依然存在,这个实现起来也很容易,用栈可以实现,先压入一个#,然后

//一个一个数进行判断,如果跟栈顶元素相同的话,那么就压入,如果不一样,就弹出栈顶元素。

//原理,先将第一个数压入,然后比较,如果相同,那么就存起来,这样可以实现压入的数据的存储,当出现和栈顶元素不一样的数据时,那么就弹出一个栈顶元素,这样就可以抵消了,设想一下,如果

//有一个数数量超过半数,南无他的在压入弹出的最后,存在栈中的肯定是这个数量超过半数的数,这时候这个数就是水王。

 

 

 

package Demo;

import java.util.Stack;

 

public class Thebigwater {

       public static void main(String[]args)

       {

              String[] a =new String[11];

              a[0]="1";

              a[1]="3";

              a[2]="1";

              a[3]="2";

              a[4]="3";

              a[5]="1";

              a[6]="4";

              a[7]="1";

              a[8]="1";

              a[9]="2";

              a[10]="5";

              String rs=select(a);

              System.out.println(rs);

       }

       static String select(String[] a)

       {

              Stack<String>save =new Stack<String>();

              save.push("#");

              for(int i=0;i<a.length;i++)

              {

                     if(a[i].equals(save.peek())||save.peek().equals("#"))

                     {

                            save.push(a[i]);

                     }

                     else

                     {

                            save.pop();

                     }

              }

              String rs=save.pop();

              return rs;

       }

}

实验截图:

 

个人总结:这个题目交给了我们从多个角度去考虑问题,这个题应用了下棋中的换子的思想,从生活中寻找规律,问题将不再是问题。

原文地址:https://www.cnblogs.com/qingtianxt/p/7000532.html