3011. Rechercher si le tableau peut être trié
Difficulté :Moyen
Sujets : Tableau, manipulation de bits, tri
Vous recevez un tableau indexé à 0 de nombres entiers positifs.
En une seule opération, vous pouvez échanger deux éléments adjacents s'ils ont le même nombre de bits définis1. Vous êtes autorisé à effectuer cette opération n'importe quel nombre de fois (y compris zéro).
Renvoyer true si vous pouvez trier le tableau, sinon renvoyer false.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Exemple 4 :
Contraintes :
Indice :
Solution :
Nous devons déterminer si le tableau peut être trié en échangeant uniquement les éléments adjacents qui ont le même nombre de bits définis dans leur représentation binaire. Voici le plan :
Observation clé : L'opération nous permet d'échanger des éléments adjacents uniquement s'ils ont le même nombre de bits définis. Cela restreint l'échange entre des éléments avec un nombre différent de bits définis.
Plan :
Étapes :
Implémentons cette solution en PHP : 3011. Rechercher si le tableau peut être trié
Explication:
- Fonction countSetBits : compte le nombre de bits définis dans un nombre à l'aide d'opérations au niveau du bit.
- Regroupement d'éléments : bitGroups est un tableau associatif où chaque clé représente le nombre de bits défini et chaque valeur est un tableau de nombres avec autant de bits définis.
Tri et Reconstruction :
- Nous parcourons les nombres pour regrouper les éléments en fonction de leur nombre de bits défini.
- Nous trions chaque groupe indépendamment.
- Nous reconstruisons ensuite le tableau en insérant chaque élément du groupe trié dans son ordre d'origine.
- Enfin, on vérifie si le tableau reconstruit est trié dans un ordre non décroissant. Si c'est le cas, retournez true ; sinon, retournez false.
Comparaison finale : Comparez le tableau reconstruit avec une version entièrement triée de nums. S'ils correspondent, retournez true ; sinon, renvoie false.
Analyse de complexité
Cette solution garantit que nous échangeons uniquement les éléments adjacents avec le même nombre de bits défini, obtenant un ordre trié si possible.
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 :
Set Bit Un bit défini fait référence à un bit dans la représentation binaire d'un nombre qui a une valeur de 1. ↩
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!