


Exemple de code pour résoudre le problème médian de deux listes ordonnées à l'aide de JavaScript
Disposez les nombres dans une séquence de petit à grand. À ce moment, la valeur de la variable au milieu est appelée la valeur médiane.
Alors, étant donné deux listes ordonnées, comment trouver leur médiane commune ?
Lorsque vous rencontrez ce problème, la première solution à laquelle vous pensez est de fusionner les deux listes ordonnées, puis de les trier par ordre croissant, et enfin de retirer la valeur médiane d'un coup.
Cette approche est très simple et pratique, mais elle n'est pas efficace à cause du tri, c'est donc un algorithme de O(N*logN).
Alors, comment optimiser ?
Vous pouvez vous référer à l'algorithme de fusion des listes linéaires ordonnées :
1 Utilisez deux pointeurs pour pointer vers la liste ordonnée actuelle et utilisez un nouveau tableau pour recevoir. la comparaison d'éléments de tableau plus petits.
2. Comparez les éléments du tableau pointés par les deux pointeurs, stockez le plus petit dans le nouveau tableau et déplacez le pointeur vers l'arrière. Ce processus se poursuivra jusqu'à ce que l'un des pointeurs soit vide ou que la valeur médiane ait été reçue par le nouveau tableau, puis la valeur médiane sera renvoyée directement.
3.Si après la phase 2 est terminée, un pointeur n'est pas nul et la valeur médiane n'est pas reçue par le nouveau tableau à ce moment, alors continuez à utiliser le pointeur pour parcourir la liste ordonnée, jusqu'à ce que la valeur médiane soit reçue, renvoyez-la.
4.L'algorithme optimisé est O(m n), et l'efficacité est grandement améliorée.
var findMedianSortedArrays = function(nums1, nums2) { //两个列表的总元素个数 var totalLength = nums1.length + nums2.length; //总元素个数是否为奇数 var isOdd = totalLength % 2 === 0 ? false : true; //两个指针 var p1 = 0; var p2 = 0; //用于接收的新数组 var array = []; //只要指针仍然在范围内 while(p1 < nums1.length && p2 < nums2.length){ //将较小的元素压入新数组,指针后移 if(nums1[p1] < nums2[p2]){ array.push(nums1[p1]); p1++; } else{ array.push(nums2[p2]); p2++; } //如果此时已接收中值,弹出中值,返回 if(array.length === totalLength / 2 + 1){ return (array.pop() + array.pop()) / 2; } if(isOdd && array.length === Math.ceil(totalLength / 2)){ return array.pop(); } } //有一个指针已经出界了 //此时仍然没有接收到中值 //对另一个指针继续遍历 //直到接收中值,弹出中值,并返回 while(p1 < nums1.length){ array.push(nums1[p1]); if(array.length === totalLength / 2 + 1){ return (array.pop() + array.pop()) / 2; } if(isOdd && array.length === Math.ceil(totalLength / 2)){ return array.pop(); } p1++; } while(p2 < nums2.length){ array.push(nums2[p2]); if(array.length === totalLength / 2 + 1){ return (array.pop() + array.pop()) / 2; } if(isOdd && array.length === Math.ceil(totalLength / 2)){ return array.pop(); } p2++; } };
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

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

Quelle est la valeur MD5 ? En informatique, MD5 (MessageDigestAlgorithm5) est une fonction de hachage couramment utilisée pour digérer ou chiffrer des messages. Il produit un nombre binaire de 128 bits de longueur fixe, généralement représenté en hexadécimal 32 bits. L'algorithme MD5 a été conçu par Ronald Rivest en 1991. Bien que l’algorithme MD5 ne soit plus considéré comme sécurisé dans le domaine de la cryptographie, il est encore largement utilisé dans la vérification de l’intégrité des données et des fichiers.
