找水王
在题中水王的个数是大于一半以上的,所以我们采用相消原则,相同我们的b就加1,不相同我们的b就减一,最后如果b的个数大于1,因为我们前面采用了++b,所以b要大于1;如果b小于1那么就不存在水王。
其中a用于记录剩余的那个帖子的ID。有水王就返回a,没水王就返回0;
package waterwing; import java.util.Scanner; public class search { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("请输入ID的个数:"); int n=sc.nextInt(); int m[]=new int[n]; System.out.println("请输入ID:"); for(int i=0;i<n;i++) { m[i]=sc.nextInt(); } int ID=search(m,n); System.out.println("水王是"+ID); } public static int search(int p[], int n) { int a=0,b=0; for (int i = 0; i < n; ++i) { if(a==0||b==0) { a=p[i]; ++b; } else if(p[i]==a) b=b+1; else b=b-1; } if(b>1) { return a;} else return 0; } }