2220. Retournements de bits minimum pour convertir le nombre
Difficulté :Facile
Sujets : Manipulation des bits
Un retournement de bits d'un nombre x consiste à choisir un bit dans la représentation binaire de x et à le retourner de 0 à 1 ou de 1 à 0.
- Par exemple, forx = 7, la représentation binaire est 111 et nous pouvons choisir n'importe quel bit (y compris les zéros non affichés) et l'inverser. Nous pouvons retourner le premier bit à droite pour obtenir 110, retourner le deuxième bit à droite pour obtenir 101, retourner le cinquième bit à droite (un zéro non significatif) pour obtenir 10111, etc.
Étant donné deux entiers début et objectif, renvoie le minimum nombre de retournements de bits pour convertir le début en objectif.
Exemple 1 :
- Entrée : début = 10, objectif = 7
- Sortie : 3
-
Explication : Les représentations binaires de 10 et 7 sont respectivement 1010 et 0111. Nous pouvons convertir 10 en 7 en 3 étapes :
- Retournez le premier bit en partant de la droite : 1010 -> 1011.
- Retournez le troisième bit en partant de la droite : 1011 -> 1111.
- Inversez le quatrième bit en partant de la droite : 1111 -> 0111.
- On peut montrer que nous ne pouvons pas convertir 10 en 7 en moins de 3 étapes. Par conséquent, nous revenons 3.
Exemple 2 :
- Entrée : début = 3, objectif = 4
- Sortie : 3
-
Explication : Les représentations binaires de 3 et 4 sont respectivement 011 et 100. Nous pouvons convertir 3 en 4 en 3 étapes :
- Retournez le premier bit en partant de la droite : 011 -> 010.
- Retournez le deuxième bit en partant de la droite : 010 -> 000.
- Retournez le troisième bit en partant de la droite : 000 -> 100.
- On peut montrer que nous ne pouvons pas convertir 3 en 4 en moins de 3 étapes. Par conséquent, nous revenons 3.
Contraintes :
- 0 9
Indice :
- Si la valeur d'un bit au début et dans l'objectif diffère, alors nous devons inverser ce bit.
- Envisagez d'utiliser l'opération XOR pour déterminer quels bits nécessitent un peu d'inversion.
Solution :
Nous devons déterminer combien de positions de bits diffèrent entre le début et l'objectif. Ceci peut être facilement réalisé en utilisant l'opération XOR (^), qui renvoie un 1 pour chaque position de bit où les deux nombres diffèrent.
Mesures:
- Effectuez l'opération XOR entre le début et l'objectif. Le résultat sera un nombre comportant des 1 dans toutes les positions où le départ et l'objectif diffèrent.
- Comptez combien de 1 sont présents dans la représentation binaire du résultat (c'est-à-dire la distance de Hamming).
- Le nombre de 1 nous donnera le nombre minimum de retournements de bits nécessaires.
Implémentons cette solution en PHP : 2220. Retournements de bits minimum pour convertir le nombre
<?php /** * @param Integer $start * @param Integer $goal * @return Integer */ function minBitFlips($start, $goal) { ... ... ... /** * go to ./solution.php */ } // Test cases echo minBitFlips(10, 7); // Output: 3 echo "\n"; echo minBitFlips(3, 4); // Output: 3 ?>
Explication:
- L'opération ^ (XOR) compare chaque bit de début et d'objectif. Si les bits sont différents, le bit correspondant dans le résultat sera 1.
- Nous comptons ensuite le nombre de 1 dans le résultat, ce qui donne le nombre de bits différents, c'est-à-dire le nombre de retournements de bits requis.
- L'opération & 1 vérifie si le dernier bit est 1, et >>= 1 décale le nombre vers la droite pour traiter le bit suivant.
Complexité temporelle :
- La complexité temporelle est (O(log N)), où (N) est le plus grand du début ou de l'objectif, car nous vérifions chaque bit du nombre. Dans le pire des cas, nous parcourrons tous les bits d'un entier de 32 bits (puisque PHP 5.6 fonctionne avec des entiers de 32 bits ou de 64 bits selon le système).
Sortir:
- Pour début = 10 et objectif = 7, le résultat est 3.
- Pour début = 3 et objectif = 4, le résultat est 3.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
- GitHub
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Cet article fournit une solution au problème que Nginx et WordPress FPM partagent des pods dans l'environnement Kubernetes, et les images sont stockées dans EFS et symbolisées à WP-Content / Téléchargements. Le noyau est de s'assurer que les conteneurs Nginx peuvent accéder au stockage EFS et à éviter les problèmes de droits d'accès aux fichiers causés par des liens symboliques. En configurant correctement le point de montage des conteneurs, nous nous assurons que les deux conteneurs peuvent accéder aux EF, résolvant ainsi le problème de la défaillance de l'image.

LaravelprioritiseDeveloperChappnessandRapidDevelopmentwithafull-Ferée, intégrée, whilleymfonyEmphasizesreusability andflexibility throughtouledCouled, standaloncomponents.2.laravelfollowsconvention overconduguration, minimixingsepandacceleratin

ActiverrorReporttingIndevelopmentUsingingError_Reportting (e_all) andini_set ('display_errors', 1) tocatchwarnings, notices etfatalerrrors.usevar_dump () etprint_r () avec un objet

La principale différence entre Isset () et Array_Key_Exists () est le traitement des valeurs nuls: 1. Isset ($ array ['key']) renvoie false lorsque la clé n'existe pas ou que la valeur est nul; 2. Array_key_exists ('clé', $ array) renvoie true tant que la clé existe, même si la valeur est nul; 3. Isset () a des performances plus élevées et est une structure linguistique, tandis que Array_key_Exists () est un appel de fonction; 4. Lorsque vous vérifiez les tableaux imbriqués, vous devez d'abord vous assurer que la clé parent existe pour éviter les avertissements; 5. Utiliser isset () est adapté pour vérifier les valeurs non nulles et les entrées utilisateur, et utilisez array_key_ex

Utilisez la fonction PREG de PCRE pour effectuer des opérations régulières: preg_match () vérifie le match, preg_match_all () trouve toutes les correspondances, preg_replace () remplace le contenu de la correspondance, preg_split () divise la chaîne par motif et nécessite des séparateurs pour enfermer le motif et ajouter des modificateurs tels que I (Ignor Uppercase et uppercase).

Cet article vise à résoudre les problèmes de connexion rencontrés lors du débogage des applications PHP via XDebug dans des machines virtuelles à l'aide du mode NAT Network. L'article introduira la configuration de XDebug et les paramètres du débogueur de code VS en détail, et fournira des étapes pour dépanner les erreurs de connexion pour aider les développeurs à effectuer un débogage à distance en douceur.

Cet article décrit une méthode pour calculer le nombre de chevauchements d'événements sur une colonne de calendrier. En déterminant si l'heure de début et l'heure de fin de l'événement se trouvent dans la plage de temps d'autres événements, il peut être déterminé s'il y a un chevauchement entre les événements. Cet article expliquera en détail la logique de jugement qui se chevauchera et fournira un exemple de code pour aider les développeurs à implémenter facilement le calcul du chevauchement des événements.

Ce document est destiné à aider les développeurs à configurer XDebug pour déboguer via la traduction d'adresses réseau (NAT) en applications PHP sur les machines virtuelles (VM). Nous fournirons des instructions détaillées sur la façon de configurer XDebug, des réseaux de machines virtuelles et des IDE tels que le code vs pour résoudre les problèmes de connectivité courants et fournir des suggestions de pratiques pour garantir que le processus de débogage se déroule bien.


Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.