课堂练习之谁是水王(一)
设计思想:
可以遍历ID表,两两相邻的ID进行比较,若不同则删掉,那么在剩余的ID表中水王的ID号仍然超过总数的一半,不断重复这个过程,把列表中ID总数降低,最后剩下的肯定是水王的ID。
代码实现:
//根据一张ID账户列表,找出水王的ID号码(水王发帖回帖数目超过1/2) //范亚雷 2016.05.20 import javax.swing.JOptionPane; public class KingWater { public static void main(String[] args) { String inputNumber = JOptionPane.showInputDialog("请输入要测试的ID号码的数量:"); int Number=Integer.parseInt(inputNumber); String[] ID=new String[Number]; //input for(int i=0;i<Number;i++) { String inputID= JOptionPane.showInputDialog("请输入列表中第"+(i+1)+"个ID号码:"); ID[i]=inputID; } String WaterKing=new String(); int sentry=0; for(int i=0;i<Number;i++) { if(sentry == 0) { WaterKing = ID[i]; sentry = 1; } else { if(WaterKing.equals(ID[i])) sentry ++; else sentry --; } }
//output JOptionPane.showMessageDialog(null, WaterKing, "水王的ID是:",JOptionPane.PLAIN_MESSAGE); } }
实现截图:
个人总结:
这次实验题目有个条件就是水王发帖的ID号超过所以ID号一半以上,因此这就是这题的突破点。对于时间复杂度,好的设计思路可以大大降低时间复杂度,比如这题就可以将时间复杂度降低到O(N)。