


Quel est le nombre minimum d'échanges requis pour qu'une sous-chaîne donnée contienne exactement des K 1 ?
Trouver le nombre minimum d'échanges requis pour qu'une sous-chaîne contienne exactement K uns est un problème courant en informatique et en programmation. Dans cet article, nous allons approfondir ce problème et lui proposer une solution C++. Cette question a des applications dans divers domaines, notamment la manipulation de chaînes, l'optimisation de la structure des données et les défis de codage lors des entretiens.
Énoncé du problème
Étant donné une chaîne binaire et un nombre K, la tâche consiste à trouver le nombre minimum d'échanges requis pour garantir que chaque sous-chaîne de la chaîne en a exactement K.
Méthode
Pour résoudre ce problème, nous pouvons utiliser la méthode à deux pointeurs et la technologie des fenêtres coulissantes. L'idée de base est de maintenir une fenêtre de taille K et de calculer le nombre d'échanges requis pour tous les 1 de la fenêtre.
Exemple
Il s'agit d'une fonction C++ qui implémente la méthode ci-dessus -
#include<bits/stdc++.h> using namespace std; int minSwaps(string s, int K) { int n = s.length(); vector<int> onesPrefix(n, 0); if(s[0] == '1') onesPrefix[0] = 1; for(int i = 1; i < n; i++) { onesPrefix[i] = onesPrefix[i-1]; if(s[i] == '1') onesPrefix[i]++; } int ans = INT_MAX; for(int i = 0; i <= n - K; i++) { int j = i + K - 1; int ones = onesPrefix[j] - ((i == 0) ? 0 : onesPrefix[i - 1]); ans = min(ans, K - ones); } return ans; } int main() { string s = "10010110"; int K = 3; cout << "Minimum number of swaps = " << minSwaps(s, K) << endl; return 0; }
Sortie
Minimum number of swaps = 1
Description du cas de test
Supposons que la chaîne soit "10010110", K = 3.
Dans la chaîne binaire initiale "10010110", nous voulons avoir exactement 3 1 dans chaque sous-chaîne de taille 3. Par exemple, la sous-chaîne « 100 » nécessite 2 échanges pour devenir « 111 ». De même, la sous-chaîne « 001 » nécessite également 2 échanges. En parcourant la chaîne, nous constatons que le nombre minimum de swaps requis pour la sous-chaîne "101" est de 1.
Conclusion
Cette question est un excellent exemple de la façon de combiner une compréhension des algorithmes, des structures de données et du langage C++ pour résoudre un problème complexe. Comprendre et mettre en œuvre de telles questions peut être très bénéfique pour les ingénieurs logiciels, en particulier lors des entretiens de codage et de la programmation compétitive.
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!

Outils d'IA chauds

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.

Undress AI Tool
Images de déshabillage gratuites

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

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

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

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

L'espace d'échange joue un rôle important dans les systèmes Linux, en particulier lorsque le système manque de mémoire. Il agit comme un espace de stockage de mémoire de sauvegarde qui aide le système à fonctionner correctement et à maintenir sa stabilité même sous une charge élevée. Cet article vous fournit un guide détaillé pour ajouter de l'espace de swap sur Ubuntu 22.04LTS afin de garantir que les performances de votre système sont optimisées et peuvent gérer diverses charges de travail. Comprendre l'espace d'échange L'espace d'échange fournit une mémoire virtuelle utilisée pour compléter la RAM physique du système. Lorsqu'un système manque de RAM, le noyau échange les données sur le disque pour éviter les pannes de mémoire et les pannes du système. Les systèmes Linux utilisent généralement l'espace de swap pour gérer cette situation. Exécutez simultanément plusieurs applications gourmandes en mémoire pour traiter des fichiers ou des données très volumineux

Étant donné deux chaînes str_1 et str_2. Le but est de compter le nombre d'occurrences de la sous-chaîne str2 dans la chaîne str1 en utilisant une procédure récursive. Une fonction récursive est une fonction qui s'appelle dans sa définition. Si str1 est "Je sais que vous savez que je sais" et str2 est "savoir", le nombre d'occurrences est de -3 Comprenons à travers des exemples. Par exemple, entrez str1="TPisTPareTPamTP", str2="TP" ; sortie Countofoccurrencesofasubstringrecursi.

Comment utiliser la fonction LOCATE dans MySQL pour trouver la position d'une sous-chaîne dans une chaîne. Dans MySQL, de nombreuses fonctions peuvent être utilisées pour traiter des chaînes. Parmi elles, la fonction LOCATE est une fonction très utile qui peut être utilisée pour trouver la position d'une sous-chaîne dans une chaîne. La syntaxe de la fonction LOCATE est la suivante : LOCATE(substring,string,[position]) où substring est la sous-chaîne à trouver et string est la sous-chaîne à trouver.

Cette fonction est similaire à la fonction strtok(). La seule différence clé est _r, qui est appelée fonction réentrante. Les fonctions réentrantes sont des fonctions qui peuvent être interrompues lors de l'exécution. Ce type de fonction peut être utilisé pour reprendre l'exécution. Par conséquent, les fonctions réentrantes sont thread-safe, ce qui signifie qu’elles peuvent être interrompues en toute sécurité par les threads sans causer de dommages. La fonction strtok_r() a un paramètre supplémentaire appelé contexte. De cette façon, la fonction peut être restaurée au bon endroit. La syntaxe de la fonction strtok_r() est la suivante : #include<string.h>char*strtok_r(char*string,constchar*limiter,char**

Une matrice est un tableau bidimensionnel de nombres disposés en lignes et en colonnes. Python n'a aucun type de données pour représenter les matrices, mais nous pouvons utiliser des listes imbriquées ou des tableaux NumPy comme matrices. Consultez les scénarios d’entrée et de sortie suivants pour voir comment permuter les éléments de première et de dernière colonne d’une matrice. Scénario d'entrée-sortie Supposons que nous ayons une matrice 3X3 représentée à l'aide d'une liste de listes. La matrice de sortie sera la matrice résultante de l’échange des premier et dernier éléments de colonne. Matrice d'entrée :[1,3,4][4,5,6][7,8,3]Matrice de sortie :[4,3,1][4,5,6][3,8,7]Considérons un autre Une matrice dont les lignes et les colonnes sont inégales. Matrice d'entrée :

Cet article expliquera en détail comment PHP renvoie la chaîne de la position de début à la position de fin d'une chaîne dans une autre chaîne. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence, j'espère que vous finirez de lire. cet article. Vous pouvez tirer quelque chose de cet article. Utilisez la fonction substr() en PHP pour extraire des sous-chaînes d'une chaîne. La fonction substr() peut extraire des caractères dans une plage spécifiée d'une chaîne. La syntaxe est la suivante : substr(string,start,length) où : string : la chaîne d'origine à partir de laquelle la sous-chaîne doit être extraite. start : L'index de la position de départ de la sous-chaîne (à partir de 0). length (facultatif) : la longueur de la sous-chaîne. Si non précisé, alors

Les expressions régulières sont un puissant outil de traitement de texte qui peut être utilisé pour faire correspondre des chaînes dans des modèles spécifiques. En PHP, les expressions régulières sont couramment utilisées dans le traitement des chaînes, la validation des formulaires, la recherche et le remplacement, etc. Cet article explique comment utiliser les expressions régulières de PHP pour extraire des caractères spécifiques d'une chaîne vers la sous-chaîne à la fin. Tout d’abord, regardons un exemple. Supposons que nous ayons une chaîne $str qui contient plusieurs URL commençant par "http://" et que nous souhaitions extraire ces URL et les stocker dans un

La question « Différentes manières de représenter N sous la forme de K entiers non nuls » a des applications dans de nombreux cas d'utilisation réels. Cryptographie - En cryptographie, des méthodes de cryptage spécifiques sont conçues en utilisant le concept de codage d'un nombre N comme somme de K entiers non nuls. Représenter un entier N comme la somme de K entiers non nuls peut apparaître dans des sous-problèmes de différents problèmes d'optimisation d'une méthode d'optimisation. Machine Learning - Dans l'apprentissage automatique, des vecteurs de caractéristiques décrivant la distribution des points de données peuvent être créés en utilisant le problème de la représentation d'un entier N comme la somme de K entiers non nuls. La traduction chinoise d'Explication est : Explication Maintenant, décodons ce problème. Supposons que nous ayons deux entiers positifs N et K, et que nous devions trouver K entiers non nuls dont la somme est égale à N. Par exemple, si N=10 et K=
