思路:因为水王的发帖数目超过了总帖子数的一半,就是水王的帖子比其他所有人的帖子加起来还要多。比较相邻两个发帖ID,若不相同,则把两个帖子全部删除;若相同,则删除一个,之后再继续比较。到最后剩下的就是水王的id。
代码:
package test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * 找水王 * @author t'w'j * */ public class ShuiWang { public static void main(String[] args) throws IOException { find(); } public static void find() throws IOException { BufferedReader br = new BufferedReader(new FileReader("sw.txt")); String s,s1 = null,s2 = null,shuiwang = null; int i=1; while((s = br.readLine()) != null) { s1 = s; if(s2 == null) { s2 = br.readLine(); } System.out.println("------------------------------------------"); System.out.println("第" + i++ + "次比较"); System.out.println("s1:" + s1); System.out.println("s2:" + s2); if(s2 != null) { if(s1.compareTo(s2) != 0) //两个值不同,s2重置,因为s1每次都重置,所以不用管s1 s2 = null; else //两个值相同,s2不重置,将相同的值当作水王记录下来 shuiwang = s2; }else { shuiwang = s1; } System.out.println("记录id:" + shuiwang); } if(shuiwang == null) shuiwang = s2; System.out.println(" 水王id为:" + shuiwang); br.close(); } }
运行结果:
个人总结:看到题目后,最开始想的是统计个id的数量,存放到数组里,然后找到数目最大的哪个id,就是水王。老师说那样就太麻烦了。之后就有同学分享了这种方法,确实这种方法很妙,时间复杂度也降低了。总之自己要多多学习,拓展思路。