设计思维:
利用数组存储所有ID号,水王是数组中ID数超过总量一半的数,所以水王ID数出现的次数-其他ID数总量>0.
让数组中的ID号两两相比较,先定义两个整数k,i。k用来计数,默认数组第一个为水王ID,与下一个ID号
比较,当相同时k+1,当不同时k-1,且将第三个的ID当作水王ID,以此类推。
源代码:
package text; public class Find { public static void main(String[] args) { String[] ids = {"001","002","002","003","001","001"}; System.out.print("水王id是:"); System.out.println(find(ids)); } public static String find(String[] id) { int n=id.length; String findid=null; int i,k; for(i=k=0;i<n;i++) { if(k==0) { findid=id[i]; k=1; } else { if(findid==id[i]){ k++; }else k--; } } return findid; } }
运行结果: