Visualizzazione dei risultati da 1 a 3 su 3

Discussione: come lo fareste??

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    9

    come lo fareste??

    salve ragazzi...scusate ma domani ho un esame di programmazione 1 e ho un forte dubbio sul confronto degli elementi...tipo il primo elemento con il secondo...poi il primo con il terzo..eccecc...per poter svolgere questo esercizio:

    Scrivere un metodo che prenda in input un vettore di long A, e restituisca un boolean che indichi
    se esiste un numero in A che occorre almeno 3 volte.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: come lo fareste??

    Originariamente inviato da Brain88
    Scrivere un metodo che prenda in input un vettore di long A, e restituisca un boolean che indichi
    se esiste un numero in A che occorre almeno 3 volte.
    Se l'array è già ordinato o comunque se puoi ordinarlo, allora è abbastanza facile perché una volta ordinato ti basta scorrerlo e vedere quando un certo valore si ripete consecutivamente almeno 3 volte.

    Se invece non è ordinato o non puoi/vuoi ordinarlo, allora devi per forza fare una "statistica" su tutti i valori. Dovresti usare una Map che mappa il valore ad un contatore. Alla fine vai a vedere nella mappa se c'è un valore che è stato conteggiato almeno 3 volte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    oppure se ti sta bene una complessità O(n^2), puoi usare cicli annidati:

    Qualcosa (molto grezzo) del genere:
    codice:
        public boolean checkThreeTimes() {
            boolean flag = false;
            for (int i = 0; i < myarray.length && !flag; i++) {
                int counter = 0;
                for (int j = i+1; j < myarray.length && counter < 3; j++) {
                    counter += (myarray[i] == myarray[j] ? 1 : 0);
                }
                flag = (counter == 2);
            }
            return flag;
        }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.