Likou 1689. Dix-le nombre minimum de nombres binaires-Implémentation du langage C-questions de difficulté moyenne

sujet

Portail

Si un nombre décimal ne contient pas de zéros non significatifs et que le nombre de chaque chiffre est 0 ou 1, alors le nombre est un nombre décimal-binaire. Par exemple, 101 et 1100 sont tous deux des nombres à dix binaires, mais 112 et 3001 ne le sont pas.
Donnez-vous une chaîne n représentant un entier décimal et retournez le nombre minimum de nombres décimaux-binaires dont la somme est n.

Exemple 1:

Entrée: n = "32"
Sortie: 3
Explication: 10 + 11 + 11 = 32

Exemple 2:

Entrée: n = "82734"
Sortie: 8

Exemple 3:

Entrée: n = "27346209830709182346"
Sortie: 9

rapide:

1 <= n.length <= 105
n 仅由数字组成
n 不含任何前导零并总是表示正整数

Source: LeetCode

Résolution de problème

modèle

int minPartitions(char * n){
    
    
}

Idées de résolution de problèmes

En fait, cette question peut être comprise comme demandant quel est le plus grand nombre dans la chaîne d'entrée, le plus grand n'est que 9, donc vous pouvez établir une boucle arrière

Nous pouvons décider de terminer la traversée de la boucle en jugeant s'il y a des éléments dans la boucle. Chaque fois que nous traversons, nous devons convertir les caractères en nombres, ce qui est n [i] - '0';

Si le 9 est détecté à l'avance, vous pouvez sauter directement, en pensant qu'il n'y aura pas plus de 9, ce qui économise du travail inutile.

Code

int minPartitions(char * n){
    
    
    int times=0;
    for(int i=0;n[i]!='\0';i++)
    {
    
    
        times=fmax(times,n[i]-'0');
        if(times==9)return times;
    }
    return times;
}

Bien entendu, la boucle for peut également être implémentée en un temps.

Je suppose que tu aimes

Origine blog.csdn.net/qq_44922487/article/details/113828404
conseillé
Classement