14周课堂测试---找水王

问题概述:寻找发帖人中的水王·---发帖超过一半

问题抽象化:寻找数组中出现超过一半的数字

要求:只使用一次循环结构

解决思路:将出现的数组元素遍历两两比较,相同则加一,不同则减一,当减为0时更换元素

由于水王出现超过一半,故当遍历完成后剩下的就是水王。

 1 package zhaoshuiwang;
 2 
 3 import java.util.Scanner;
 4 
 5 public class water {
 6       public static void main(String[] args) {
 7           System.out.println("请输入帖子数目");
 8         Scanner sc=new Scanner(System.in);
 9         int n=sc. nextInt();//数量
10         System.out.println("请依次输入各个帖子发帖人id");
11         int a[]=new int[n];
12         for (int i=0;i<n;i++)
13          a[i]=sc.nextInt();
14          System.out.println(Find(a,n));
15          sc.close();
16        }
17 
18 
19     //水王pk,相同者+,不同者-,最后剩下水王
20     public static int Find(int a[],int n){
21         int king=a[0];
22         int number=1;
23         for (int i=0;i<n;i++){
24             if (number==0){
25                 king=a[i];
26                 number=1;
27             }else
28             if (a[i]==king){
29                 number++;
30             }else{
31                 number--;
32             }
33         }
34         return king;
35     }
36 
37 }
water
原文地址:https://www.cnblogs.com/yeshenfeng/p/10951103.html