课堂练习之谁是水王(一)

设计思想:

可以遍历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)。

posted @ 2016-05-20 17:52  Fanyalei  阅读(158)  评论(0编辑  收藏  举报