首页 > 代码库 > 课堂作业之寻找水王

课堂作业之寻找水王

一、题目

  有一个大“水王”,他不仅喜欢发贴,还会回复其他ID发的每个帖子。该“水王”发帖数目超过了帖子总数的一半。如果有当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的水王吗?

二、设计思想

  “水王”最不怕删帖,因为他的帖子数量超过总数的一半,那么我们可以从第二个依次与上一个比较,相同的ID留下,不同的ID消除。

三、代码

package demo;
import java.util.Scanner;
public class FindActive {
    public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入ID的个数:");
        int num=sc.nextInt();
        //保证输入的数合法
        while(true){
            if(num<=0){
                System.out.print("输入的不合法!请重新输入:");
                num=sc.nextInt();
            }
            else break;
        }
        int [] arr=new int[num];//将ID号存放在数组中
        int i,ii;
        //输入所有ID号
        for(i=0;i<num;i++){
            ii=i+1;
            System.out.print("请输入第"+ii+"个ID号:");
            arr[i]=sc.nextInt();
        }
        int king=findTheMostActive(arr,num);
        System.out.println("水王的ID为"+king);
    }
    public static int findTheMostActive(int array[],int len){
        int king=array[0];
        int t=1;
        for(int i=1;i<len;i++){
            if(king!=array[i]){
                t=t-1;
                if(t<=0){
                    king=array[i+1];
                    t=1;
                    i++;
                }
            }
            else{
                king=array[i];
                t=t+1;
            }
        }
        return king;
    }
}

四、结果

技术分享

 

课堂作业之寻找水王