0
votes

Comment puis-je obtenir des valeurs d'un tableau sans compter ses duplicats?

Je sais que le titre est vraiment mauvais, mais j'ai passé 10 minutes à penser à un moyen de décrire mon problème de manière concise et que je ne pouvais pas. Ce programme est censé créer une méthode statique numunique () qui renvoie la quantité de nombres uniques dans un tableau. Donc, par exemple, si j'ai un tableau avec {2, 4, 2, 7, 16, 4}, la quantité de nombres uniques serait de 4 (2, 4, 7 et 16).

J'écris le code Pour trouver les doublons dans mon tableau, je me suis rendu compte que je ne savais pas quoi faire avec cela quand j'avais les doubles duplicats, et je me suis brisé la tête en essayant de penser à une solution mais je ne peux pas.

Voici le code jusqu'à présent: xxx


1 commentaires

lire ce que la table de hachage et la table de recherche sont


4 Réponses :


0
votes

Ma compréhension est que vous comptez (ne pas les renvoyer tous) le nombre d'éléments uniques dans la matrice. Vous essayez de regarder tout le chemin, mais il suffit de suivre le nombre de doublons que vous allez. Ce code regarde en arrière pour voir si l'entrée actuelle duplique le previuos One (qui fonctionne parce que vous avez trié, ce qui était une bonne étape).

import java.util.Arrays;
public class Unique {
public static void main(String[] args) {
    int[] numbers = {
        1,
        6,
        2,
        14,
        6,
        8,
        2,
        1,
        23
    };
    System.out.println(numUnique(numbers));
}

public static int numUnique(int[] array) {
    Arrays.sort(array);
    int dups = 0;
    for (int i = 1; i < array.length; i++) {
        if (array[i] == array[i - 1]) {
            dups++;
        }
    }
    return (array.length - dups);
}
}


4 commentaires

OK, je l'ai fait et cela a fonctionné pour le premier tableau, mais j'ai ensuite testé avec un autre tableau avec {7, 7, 7, 7, 7, 7} et au lieu de retourner 0, il est retourné -9, car c'est la longueur des tableaux - DUPS. Avez-vous une idée sur la façon dont je le répare?


Chez JDOODLE.COM/Online-JAVA-COMPILER Je viens de le courir sur {7, 7, 7, 7, 7, 7} et il est renvoyé 1. La longueur de la matrice est de 6 et DUPS est de 5.


Oh merci beaucoup! Je n'ai pas copié et coller votre code, seulement la mine modifiée, mais je f-d up up, merci de remercier u merci uu


Le problème avec le vôtre était que Inner pour la boucle (voir mon commentaire ci-dessous à Mikosz). Heureux d'aider.



0
votes

Si vous souhaitez conserver le code que vous avez jusqu'à présent et trier la liste, il existe deux options qui semblent avoir un sens. Où l'on est de renvoyer le nombre d'entiers uniques, et l'autre consiste à renvoyer une liste des entiers uniques.

renvoyer le nombre de numéros uniques: xxx

retour La liste des nombres uniques, vous demanderait simplement de renvoyer la liste des uniques, sans le .Size ().

Si vous souhaitez un tableau au lieu d'une liste, vous devrez renvoyer ce qui suit: xxx


0 commentaires

0
votes

Si vous utilisez des tableaux, pourquoi ne pas l'explorer davantage xxx


0 commentaires

0
votes

Garder votre code tel qu'il est:

Si vous voulez savoir combien de non-duplicates sont dans votre tableau: xxx

edit Cette solution ne fonctionne pas dans toutes les situations.

Je sais que ce n'est pas la façon la plus optimale de le faire, mais le seul que je connaisse hah: xxx

Si vous trouvez un autre problème, demandez-moi tout de suite


3 commentaires

Hey, merci! Je l'ai fait, mais quand j'ai essayé la méthode avec des matrices différentes, les sorties étaient définitivement erronées. Je comprends pourquoi ils ont tort mais ne pouvaient pas comprendre comment les réparer. Premier tableau: {2,3,2,2} Sortie: 1


et deuxième tableau: {7,7,7,7,7,7} Sortie: -9


La question avec la première approche était la deuxième pour boucle. Dans les cas du 7, vous comptez les 5 derniers 7 comme dupliquant le premier, puis les 4 derniers en tant que dupliquant la seconde ... la dernière comme duplication du 5ème. 5 + 4 + 3 + 2 + 1 = 15. 6-15 = -9