


Explication détaillée de la structure des données JavaScript et des compétences de l'algorithme stack_javascript
Dans le article précédent le blog a présenté la liste suivante. La liste est la structure la plus simple, mais si vous voulez traiter des structures plus complexes, la liste est trop simple, nous avons donc besoin d'une sorte. of et Lists sont similaires mais plus complexes aux structures de données - les piles. La pile est une structure de données efficace car les données ne peuvent être ajoutées ou supprimées qu'en haut de la pile, cette opération est donc rapide et facile à mettre en œuvre.
1 : Opérations sur la pile.
La pile est un type spécial de liste. Les éléments de la pile ne sont accessibles que par une extrémité de la liste, qui est le haut de la pile. Par exemple, lorsque vous faites la vaisselle dans un restaurant, vous ne pouvez d'abord laver que l'assiette supérieure. Une fois l'assiette lavée, elle ne peut être vissée qu'au sommet de la pile d'assiettes. La pile est une structure de données appelée « dernier entré, premier sorti » (LIFO).
Étant donné que la pile a la caractéristique dernier entré, premier sorti, tout élément qui ne se trouve pas en haut de la pile n'est pas accessible. Afin d'obtenir l'élément en bas de la pile, l'élément au-dessus doit l'être. retiré en premier. Les deux opérations principales que nous pouvons effectuer sur la pile sont de pousser un élément sur la pile et de retirer un élément de la pile. Nous pouvons utiliser la méthode push() pour pousser dans la pile et la méthode pop() pour sortir de la pile. Bien que la méthode pop() puisse accéder à l'élément en haut de la pile, après avoir appelé cette méthode, l'élément en haut de la pile est définitivement supprimé de la pile. Une autre méthode couramment utilisée est peek(), qui renvoie uniquement l'élément supérieur de la pile sans le supprimer.
Le schéma réel de poussée et de saut sur la pile est le suivant :
push(), pop() et peek() sont les trois méthodes principales de la pile, mais la pile a d'autres méthodes et propriétés. Comme suit :
clear() : Efface tous les éléments de la pile.
length() : enregistre le nombre d'éléments dans la pile.
2 : La mise en œuvre de la stack est la suivante :
On peut commencer par implémenter les méthodes de la classe stack comme suit :
fonction Pile() {
This.dataStore = [];
Ceci.top = 0;
>
Comme ci-dessus : dataStore enregistre tous les éléments de la pile. La variable top enregistre la position du haut de la pile et est initialisée à 0. Cela signifie que la position de départ du tableau correspondant au haut de la pile est 0, si un élément est poussé sur la pile. La valeur de la variable changera en conséquence.
Nous avons également les méthodes suivantes : push(), pop(), peek(), clear(), length();
1. Méthode Push() ; lorsque vous poussez un nouvel élément dans la pile, il doit être enregistré à la position correspondant à la variable supérieure dans le tableau, puis la valeur supérieure est augmentée de 1 pour pointer vers le suivant. position dans le tableau. Le code suivant :
fonction push(élément) {
This.dataStore[this.top] = élément;
>
2. La méthode pop() est à l'opposé de la méthode push() : elle renvoie l'élément supérieur de la pile et décrémente la valeur supérieure de 1. Le code suivant :
fonction pop(){
return this.dataStore[--this.top];
>
3. La méthode peek() renvoie l'élément en première position du tableau, qui est l'élément supérieur de la pile
;
Fonction coup d'oeil(){
return this.dataStore[this.top - 1];
>
4. Méthode length() Parfois, nous avons besoin de savoir combien d'éléments il y a dans la pile. Nous pouvons renvoyer le nombre d'éléments dans la pile en renvoyant la valeur de la variable top, comme indiqué dans le code suivant :
.
Longueur de la fonction(){
return this.top;
>
5. clear(); Parfois, nous voulons vider la pile, nous définissons la valeur supérieure de la variable sur 0 avec le code suivant :
fonction clear() {
this.top = 0;
}
Tous les codes ci-dessous :
fonction Pile() {
This.dataStore = [];
Ceci.top = 0;
>
Stack.prototype = {
//Pousse un nouvel élément dans la pile
Push : fonction (élément) {
This.dataStore[this.top] = élément;
},
// Accédez à l'élément supérieur de la pile, l'élément supérieur de la pile est définitivement supprimé
pop : fonction(){
return this.dataStore[--this.top];
},
// Renvoie l'élément en première position du tableau, c'est-à-dire l'élément supérieur de la pile
coup d'oeil : fonction(){
return this.dataStore[this.top - 1];
},
//Combien d'éléments sont stockés dans la pile
longueur : fonction(){
return this.top;
},
//Effacer la pile
; clair : fonction(){
Ceci.top = 0;
>
};
L'exemple de démonstration est le suivant :
var stack = new Stack();
stack.push("a");
stack.push("b");
stack.push("c");
console.log(stack.length()); // 3
console.log(stack.peek()); // c
var popped = stack.pop();
console.log(popped); // c
console.log(stack.peek()); // b
stack.push("d");
console.log(stack.peek()); // d
stack.clear();
console.log(stack.length()); // 0
console.log(stack.peek()); // non défini
Ci-dessous nous pouvons implémenter une définition récursive de la fonction factorielle telle que 5 ! La factorielle de 5 ! = 5*4*3*2*1;
Le code suivant :
fonction fait(n) {
var s = new Stack();
; pendant que(n > 1) {
s.push(n--);
>
var produit = 1;
Tandis que(s.length() > 0) {
Produit *= s.pop();
>
Retourner le produit ;
>
console.log(fact(5));
La signification du code ci-dessus est la suivante : passez d'abord le chiffre 5 dans la fonction, utilisez une boucle while et poussez la fonction push() en utilisant la pile dans la pile avant de la décrémenter de 1 à chaque fois jusqu'à ce que la variable n soit moins de 1. Définissez ensuite une variable product ; utilisez la méthode length() de la pile pour déterminer si elle est supérieure à 0 et exécutez product* = s.pop() à chaque fois ; la méthode pop() renvoie l'élément supérieur de la pile et la supprime ; l'élément de la pile. Ainsi, à chaque exécution, un élément est supprimé jusqu'à ce que s.length() <= 0. Donc product = 5*4*3*2*1 et autres opérations.

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)

Les défis courants rencontrés par les algorithmes d'apprentissage automatique en C++ incluent la gestion de la mémoire, le multithread, l'optimisation des performances et la maintenabilité. Les solutions incluent l'utilisation de pointeurs intelligents, de bibliothèques de threads modernes, d'instructions SIMD et de bibliothèques tierces, ainsi que le respect des directives de style de codage et l'utilisation d'outils d'automatisation. Des cas pratiques montrent comment utiliser la bibliothèque Eigen pour implémenter des algorithmes de régression linéaire, gérer efficacement la mémoire et utiliser des opérations matricielles hautes performances.

La couche inférieure de la fonction de tri C++ utilise le tri par fusion, sa complexité est O(nlogn) et propose différents choix d'algorithmes de tri, notamment le tri rapide, le tri par tas et le tri stable.

Lors de l'utilisation de structures de données complexes en Java, Comparator est utilisé pour fournir un mécanisme de comparaison flexible. Les étapes spécifiques comprennent : la définition d’une classe de comparaison et la réécriture de la méthode de comparaison pour définir la logique de comparaison. Créez une instance de comparaison. Utilisez la méthode Collections.sort, en transmettant les instances de collection et de comparateur.

01Aperçu des perspectives Actuellement, il est difficile d'atteindre un équilibre approprié entre efficacité de détection et résultats de détection. Nous avons développé un algorithme YOLOv5 amélioré pour la détection de cibles dans des images de télédétection optique haute résolution, en utilisant des pyramides de caractéristiques multicouches, des stratégies de têtes de détection multiples et des modules d'attention hybrides pour améliorer l'effet du réseau de détection de cibles dans les images de télédétection optique. Selon l'ensemble de données SIMD, le mAP du nouvel algorithme est 2,2 % meilleur que YOLOv5 et 8,48 % meilleur que YOLOX, permettant ainsi d'obtenir un meilleur équilibre entre les résultats de détection et la vitesse. 02 Contexte et motivation Avec le développement rapide de la technologie de télédétection, les images de télédétection optique à haute résolution ont été utilisées pour décrire de nombreux objets à la surface de la Terre, notamment des avions, des voitures, des bâtiments, etc. Détection d'objets dans l'interprétation d'images de télédétection

Les structures de données et les algorithmes sont à la base du développement Java. Cet article explore en profondeur les structures de données clés (telles que les tableaux, les listes chaînées, les arbres, etc.) et les algorithmes (tels que le tri, la recherche, les algorithmes graphiques, etc.) en Java. Ces structures sont illustrées par des exemples pratiques, notamment l'utilisation de tableaux pour stocker les scores, de listes chaînées pour gérer les listes de courses, de piles pour implémenter la récursion, de files d'attente pour synchroniser les threads, ainsi que d'arbres et de tables de hachage pour une recherche et une authentification rapides. Comprendre ces concepts vous permet d'écrire du code Java efficace et maintenable.

1. Contexte de la construction de la plateforme 58 Portraits Tout d'abord, je voudrais partager avec vous le contexte de la construction de la plateforme 58 Portraits. 1. La pensée traditionnelle de la plate-forme de profilage traditionnelle ne suffit plus. La création d'une plate-forme de profilage des utilisateurs s'appuie sur des capacités de modélisation d'entrepôt de données pour intégrer les données de plusieurs secteurs d'activité afin de créer des portraits d'utilisateurs précis. Elle nécessite également l'exploration de données pour comprendre le comportement et les intérêts des utilisateurs. et besoins, et fournir des capacités côté algorithmes ; enfin, il doit également disposer de capacités de plate-forme de données pour stocker, interroger et partager efficacement les données de profil utilisateur et fournir des services de profil. La principale différence entre une plate-forme de profilage d'entreprise auto-construite et une plate-forme de profilage de middle-office est que la plate-forme de profilage auto-construite dessert un seul secteur d'activité et peut être personnalisée à la demande. La plate-forme de mid-office dessert plusieurs secteurs d'activité et est complexe ; modélisation et offre des fonctionnalités plus générales. 2.58 Portraits d'utilisateurs de l'arrière-plan de la construction du portrait sur la plate-forme médiane 58

L'arbre AVL est un arbre de recherche binaire équilibré qui garantit des opérations de données rapides et efficaces. Pour atteindre l'équilibre, il effectue des opérations de virage à gauche et à droite, en ajustant les sous-arbres qui violent l'équilibre. Les arbres AVL utilisent l'équilibrage de hauteur pour garantir que la hauteur de l'arbre est toujours petite par rapport au nombre de nœuds, réalisant ainsi des opérations de recherche de complexité temporelle logarithmique (O (logn)) et maintenant l'efficacité de la structure de données même sur de grands ensembles de données.

Auteur | Évalué par Wang Hao | L'application Chonglou News est un moyen important pour les gens d'obtenir des sources d'informations dans leur vie quotidienne. Vers 2010, les applications d'information étrangères populaires comprenaient Zite et Flipboard, tandis que les applications d'information nationales populaires étaient principalement les quatre principaux portails. Avec la popularité des produits de recommandation d'actualités d'une nouvelle ère représentés par Toutiao, les applications d'actualités sont entrées dans une nouvelle ère. Quant aux entreprises technologiques, quelle qu'elles soient, tant qu'elles maîtrisent la technologie sophistiquée des algorithmes de recommandation d'actualités, elles auront fondamentalement l'initiative et la voix au niveau technique. Aujourd'hui, jetons un coup d'œil à un article du RecSys2023 Best Long Paper Nomination Award : GoingBeyondLocal:GlobalGraph-EnhancedP.
