这个小程序的编写时我们两人小组第三次合作完成的,随着前两次项目的开发,这次作业的完成相对比较顺利,两个人的默契程度提高了不少;
作业要求:找出在贴吧中真正的水王(发帖及回帖数超过所有帖子的一半),时间复杂度小于等于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; } }