剣指offer 26--配列中の回数が半分を超える数字
テーマ:配列の中で1つの数字が出現する回数は配列の長さの半分を上回って、この数字を探し出して下さい
これは編纂する時比較的に簡単で、主に1つの思想の問題です
やはり境界状況に注意しなければならない.
これは編纂する時比較的に簡単で、主に1つの思想の問題です
package offer;
/* : , */
/* , 。
* : , 。
* ~ , , l :
* , , 1 。 , , 1 。
* ,
* 1 。*/
public class Test29 {
public static int findMushNumber(int []array){
//
if (array == null || array.length < 1) {
throw new IllegalArgumentException("ERROR");
}
//
int temp = array[0];
int tempnum = 1;
//
for(int i = 1; i < array.length; i++){
if(temp == array[i]){
tempnum++;
}else if(temp != array[i]){
if(tempnum == 1){
// , 1
temp = array[i];
}else if(tempnum > 1){
tempnum--;
}
}
}
return temp;
}
public static void main(String args[]){
int a[] = { 1, 2, 3, 4, 4, 4, 2, 4, 4};
int b[] = { 1, 9, 9, 4, 9, 8, 9, 9, 2};
System.out.println("The mush number is:"+findMushNumber(a));
System.out.println("The mush number is:"+findMushNumber(b));
}
}
やはり境界状況に注意しなければならない.