Le nombre de fois (de mise en œuvre Java) Plus de la moitié du tableau apparaissent
Titre Description
tableau Le nombre de fois qu'un numéro apparaît plus de la moitié de la longueur du tableau, trouver ce numéro. Par exemple, une longueur du tableau d'entrée 9 {} 1,2,3,2,2,2,5,4,2. Étant donné que le numéro 2 apparaît cinq fois, plus de la moitié de la longueur du tableau dans le tableau, la sortie 2. S'il y a 0 sortie.
idées de résolution de problèmes
Il y a un certain nombre d'apparition de array plus de la moitié, ce qui signifie que le nombre de fois où il apparaît apparence que tous les autres numéros et plus. Ainsi , nous pouvons économiser deux valeurs dans le temps à travers le réseau, on est le nombre actuel, un certain nombre de fois que le numéro est indiqué. Et actuellement stocké sous le même numéro si le tableau, les temps ++ ou Times-. Si les temps == 0, le numéro suivant est enregistré, et le temps mis à 1. le nombre de tous sera en mesure parce qu'il ya un plus grand nombre de la moitié pour faire en sorte que ce soit la dernière fois que le nombre de fois est réglé sur le numéro 1.
Il convient de noter que les résultats obtenus de cette manière, ne garantit pas l'existence de ces chiffres, tout besoin de déterminer si les conclusions de cette condition est satisfaite, sinon il ne montre existe pas. (Exemple: [1,1,1,2,2,2,3], le résultat final est de trois, mais le nombre ne dépasse pas 3 apparaît la moitié)
code mise en œuvre
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;
}
}