Trouver le plus proche nombre de 0
Je suis en train de dépanner un programme en Java.
Exigences: la Nécessité de trouver la valeur la plus proche de zéro dans un Tableau. Dans le Tableau si les valeurs sont 1 et -1 le plus proche doit être à la valeur positive.
public class CloseToZero {
public static void main(String[] args) {
int[] data = {2,3,-2};
int curr = 0;
int near = data[0];
//find the element nearest to zero
for ( int i=0; i < data.length; i++ ){
curr = data[i] * data[i];
if ( curr <= (near * near) ) {
near = data[i];
}
}
System.out.println( near );
}
}
ce qui ne fonctionne pas?
ici, la sortie d'obtenir -2.Mais je suis à la recherche est supposons que 2 et -2 dans la matrice de cette situation positive de la valeur doivent être prioritaires
techniquement 1 et -1 les deux sont tout aussi proche de 0. par la différence de 1.
Dans ce cas, ajouter un autre
La quadrature du nombre est mathématiquement élégant, mais il a considérablement restreint la gamme de nombres qui peut être accepté dans votre tableau. Je voudrais utiliser les Mathématiques.abs() à la place.
ici, la sortie d'obtenir -2.Mais je suis à la recherche est supposons que 2 et -2 dans la matrice de cette situation positive de la valeur doivent être prioritaires
techniquement 1 et -1 les deux sont tout aussi proche de 0. par la différence de 1.
Dans ce cas, ajouter un autre
if
instruction pour vérifier si il est positif ou négatif.La quadrature du nombre est mathématiquement élégant, mais il a considérablement restreint la gamme de nombres qui peut être accepté dans votre tableau. Je voudrais utiliser les Mathématiques.abs() à la place.
OriginalL'auteur user3172930 | 2014-05-20
Vous devez vous connecter pour publier un commentaire.
Trier le tableau (ajouter une ligne de code) de sorte que le dernier numéro que vous choisissez sera positif si la même valeur absolue est sélectionné pour les nombres positifs et négatifs avec la même distance.
OriginalL'auteur JuanZe
Cela fera en
O(n)
temps:OriginalL'auteur kmera
Si vous utilisez java8:
OriginalL'auteur M. Abbas
Juste ajouter un zéro à cette liste.
Ensuite trier la liste
puis saisir le nombre de chiffres avant ou après le zéro et de choisir le minimum de plus grand que zéro
cela fonctionne, mais ce problème peut être résolu en temps O(n) fois. votre solution nécessite O(n lg n)
juste point
OriginalL'auteur Bachmann
Que vous multipliez les données[i] avec les données[i], une valeur négative et une valeur positive aura le même effet.
Par exemple, dans votre exemple: 2 et -2 sera 4. Donc, votre code n'est pas en mesure de sorte que vous avez besoin.
Donc, ici, il faut -2 comme la proximité de la valeur, car il a le même "poids" que 2.
Donc, il devrait être une bonne chose pour indiquer que, dans votre question. Parce qu'il n'est pas clair.
OriginalL'auteur lpratlong
Hypothèse est que le tableau
data
a au moins 1 valeur.La valeur dans
closedToZero
est l'indice de la position fermée à zéro, et non de la valeur.ensuite, la fonction
return (num*num)/num;
Puis remplacer
Math.abs(...)
avec votre propre valeur absolue de la méthode/de code.Ce code est faux. Il a essayé avec
int[] data = {2, 3, -2, 4, 10, 6, -1};
problème, le code fonctionne parfaitement. Elle retourne le numéro d'index de la plus proche de zéro, et non pas le nombre lui-même!
OriginalL'auteur munyul
voici une méthode qui vous donne le plus proche de zéro.
cas d'utilisation 3 : { -2,3,-2} ==> retour -2: utiliser les Mathématiques.abs() pour la comparaison et obtenir le moins.
}
OriginalL'auteur Anass Gandalf
Vous pouvez le faire comme ceci:
Tout d'abord vous avez besoin pour stocker tous vos nombres dans un tableau. Après que trier le tableau --> c'est le truc qui va faire que vous n'utilisez pas les Mathématiques.abs(). C'est maintenant le temps de faire une boucle qui parcourt le tableau. Sachant que le tableau est trié est important que vous commencez à faire d'abord une instruction if pour les nombres négatifs, ensuite, pour les points positifs (de cette façon, si vous avez deux valeurs les plus proches de zéro, supposons -1 et 1 --> imprimer le positif).
Espère que cela va vous aider.
OriginalL'auteur Cristian Babarusi
La façon la plus simple de traiter cette question est diviser le tableau en positif et négatif de tri et de pousser les deux premiers éléments des deux tableaux dans un autre tableau. Amusez-vous!
OriginalL'auteur DevDisrupt