找水王

问题;有一个网友,他在贴吧上的发帖数最多,而且占到了一半以上,要求我们设计算法找出这个传说中的水王。

这个问题很简单,只需要我们用二重循环吧每个id 对应出现的此书全部都算出来,在进行一次比较,求出次数最大值。

然而,老师说这不是最优的解法。老师给出我们提示:帖数占到一半以上,一个个的删。

最后得到解题思路。

一次循环两两比较,两两抵消。

package shuiwang;


 
import java.util.Scanner;
 
class tie
{
     private int num;
     private String id;
     public tie() {};
     public tie(int num,String id)
     {
         this.num=num;
         this.id=id;
     }
     public int getNum() {
         return num;
     }
     public void setNum(int num) {
         this.num = num;
     }
     public String getId() {
         return id;
     }
     public void setId(String id) {
         this.id = id;
     }
     
 }
 public class zhao
 {
 
     public static void main(String[] args) {
         // TODO 自动生成的方法存根
           Scanner sc =new Scanner(System.in);
              
             System.out.println("请输入ID的个数:");
             int a=sc.nextInt();
            int b[]=new int[a];
             System.out.println("请输入ID");
             for(int i=0;i<a;i++)
             {
                b[i]=sc.nextInt();
             }
              
             int water=b[0];
             int k=1;
             for(int i=1;i<a;i++)
             {
                 if(water!=b[i])
                 {
                    k=k-1;
                     if(k<=0)
                    {
                       water=b[i+1];
                        k=1;
                         i++;
                    }
                 }
                 else
                 {
                     water=b[i];
                     k=k+1;
                 }
             }
              
             System.out.println("水王为"+water);
 
         
     }
     
    
     
}
原文地址:https://www.cnblogs.com/990906lhc/p/11071688.html