这个小程序的编写时我们两人小组第三次合作完成的,随着前两次项目的开发,这次作业的完成相对比较顺利,两个人的默契程度提高了不少;
作业要求:找出在贴吧中真正的水王(发帖及回帖数超过所有帖子的一半),时间复杂度小于等于O(n);
设计思路:最开始的时候想着用遍历所有数组里的数据统计比较完成,发现时间复杂度较高,之后通过讨论发现,因为水王发帖个数超过,如果通过比较不同消去的方法就可以实现了,我们因此采用了栈的思想实现了消去的过程;
代码如下:
import java.util.Stack;
public class Water {
public static void main(String[]args)
{
String[] a ={"1","1","1","1","2","2","2"};
String waterwang=select(a);
System.out.println("水王:");
System.out.println(waterwang);
}
static String select(String[] a)
{
Stack<String> s =new Stack<String>();
s.push("#");
for(int i=0;i<a.length;i++)
{
if(a[i].equals(s.peek())||s.peek().equals("#"))
{
s.push(a[i]);
}
else
{
s.pop();
}
}
String rs=s.pop();
return rs;
}
}