找水王

设计思想

每次删除两个不同的ID,不管是否包含水王的ID,那么在剩下的ID列表中出现的次数仍是超过半数。将问题简化。

代码实现

public class test {
     static public  int find(int ID[] ,int n)
     {
    	 int kw=0;//储存结果
    	 int number=0; 
    	 for(int i=0;i<n;i++) 
    	 {  
    	     if(number==0) 
    	     {
    	          kw= ID[i]; 
                  number= 1; 
             }
    	     else
    	     {
               	  if(ID[i] ==kw)//相同则比较下一个数
                      number++;
    	          else  //不同
    		          number--; 
    	     }
    	 }
    	 return kw; 
    	
}   
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int id[] = {1,2,4,4,4,2,2,4};
		int ID = find(id, 8); 
		System.out.println("水王的ID号是:"+ID);

	}

}

实现截图

 

个人总结

   开始的设计思路是最麻烦的进行各个ID分贝统计出现次数。这样使问题便的复杂。

在老师提供的设计思路上进行思考,得到现有的思想。自己还需要多思考,是自己思路便的更加灵活。

原文地址:https://www.cnblogs.com/java-test/p/5512508.html