回数(Java実装)は、複数のアレイの半数以上が表示されます
タイトル説明
配列回数数は、アレイの半分以上の長さを表示され、この番号を見つけます。例えば、入力アレイ9の長さは{1,2,3,2,2,2,5,4,2}。数2は5回、アレイ内のアレイの半分以上の長さ、出力2が表示されているので。0出力がある場合。
問題解決のためのアイデア
それは他のすべての数字と大きなよりも外観が現れる回数を意味半分以上配列arrayの出現の数があります。私たちは、配列を時間内に2つの値を保存することができますので、一つは番号が表示されていることを現在の数、回数です。そして、現在、同じ番号の下に保存された配列の場合、回++、またはtimes-。時間は0を==場合は、次の番号が保存され、時間が1に設定されています。半分以上の数の大きいがありますので、すべての数は、これは回数が数1に設定されている最後の時間であることを保証することができるようになります。
存在しない示していない場合は、このようにして得られた結果は、この条件の結論が成立しているか否かを判断するために、すべての必要性を、このような数字の存在を保証するものではないことに留意すべきです。(例:[1,1,1,2,2,2,3]は、最終的な結果は3であるが、数が3現れる半分を超えません)
コードの実装
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int length = array.length;
int result = array[0];
int times = 1;
for(int i = 1; i < length; i++) {
if(times == 0) {
result = array[i+1];
times = 1;
}
else if(array[i] == result) {
times++;
}
else if(array[i] != result) {
times--;
}
}
times = 0;
for(int i = 0; i < length; i++) {
if(array[i] == result) {
times++;
}
}
if(times > length/2) {
return result;
}
else
return 0;
}
}