//水王的思想就是抵消的思想,如果能想到抵消的思想, 还会使用栈或者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;
}
}
实验截图:
个人总结:这个题目交给了我们从多个角度去考虑问题,这个题应用了下棋中的换子的思想,从生活中寻找规律,问题将不再是问题。