Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung von drei Methoden zum Ermitteln der Schnittmenge zweier Arrays in PHP

Detaillierte Erläuterung von drei Methoden zum Ermitteln der Schnittmenge zweier Arrays in PHP

藏色散人
Freigeben: 2023-04-08 12:08:01
nach vorne
6437 Leute haben es durchsucht

Detaillierte Erläuterung von drei Methoden zum Ermitteln der Schnittmenge zweier Arrays in PHP

Frage: Schreiben Sie bei gegebenen zwei Arrays eine Funktion, um deren Schnittmenge zu berechnen.

Beispiel 1:

Eingabe: nums1 = [1,2,2,1],nums2 = [2,2]

Ausgabe: [2]

Beispiel 2:

Eingabe: Nums1 = [4,9,5], Nums2 = [9,4,9,8,4]

Ausgabe: [9,4]

Hinweis:

Jedes Element im Ausgabeergebnis muss eindeutig sein.

Wir können die Reihenfolge der Ausgabeergebnisse ignorieren.

Lösung 1: Ein Array iterieren

Ideenanalyse:

Ein Array iterieren und feststellen, ob es ein anderes Array gibt

PHP Code-Implementierung:

/**
 * @param Integer[] $nums1
 * @param Integer[] $nums2
 * @return Integer[]
 */
function intersection($nums1, $nums2) {
    $res = [];
    for($i=0;$i<count($nums1);$i++){
        if(in_array($nums1[$i],$nums2)){
            $res[] = $nums1[$i];
        }
    }
    return array_unique($res);
}
Nach dem Login kopieren

Verwendung:

$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Komplexitätsanalyse:

Zeitkomplexität: O(mn)

Lösung 2: Integriert Array-Funktion

Ideenanalyse:

Verwenden Sie die Funktion array_intersect(), um die Schnittmenge von Arrays zu ermitteln, und verwenden Sie dann array_unique(), um Duplikate zu entfernen

PHP-Code-Implementierung :

/**
 * @param Integer[] $nums1
 * @param Integer[] $nums2
 * @return Integer[]
 */
function intersection($nums1, $nums2) {
    return array_unique(array_intersect($nums1,$nums2));
}
Nach dem Login kopieren

Verwendung:

$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lösung 3: Brutale Lösung

Ideenanalyse:

Fügen Sie zunächst die beiden Arrays zu einem zusammen Array, dann zweimal durchlaufen, um

PHP-Code-Implementierung zu finden:

/**
 * @param Integer[] $nums1
 * @param Integer[] $nums2
 * @return Integer[]
 */
function intersection($nums1, $nums2) {
    $new_arr = array_merge(array_unique($nums1),array_unique($nums2));
    $res = [];
    for($i=0;$i<count($new_arr);$i++){
        for($j=$i+1;$j<count($new_arr);$j++){
            if($new_arr[$i] == $new_arr[$j]){
                $res[] = $new_arr[$i];
            }
        }
    }
    return array_unique($res);
}
Nach dem Login kopieren

Verwendung:

$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Komplexitätsanalyse:

Zeitkomplexität: O(n ^ 2)

Lösung 4: Doppelzeiger

Ideenanalyse:

Sortieren Sie zuerst die beiden Arrays und blättern Sie durch die Doppelzeiger, um

PHP-Code zu suchen Implementierung:

/**
 * @param Integer[] $nums1
 * @param Integer[] $nums2
 * @return Integer[]
 */
function intersection($nums1, $nums2) {
    sort($nums1);
    sort($nums2);
    $i = $j = 0;
    $res = [];
    while($i < count($nums1) && $j < count($nums2)){
        if($nums1[$i] == $nums2[$j]){
            $res[] = $nums1[$i];
            $i++;
            $j++;
        }elseif($nums1[$i] < $nums2[$j]){
            $i++;
        }elseif($nums1[$i] > $nums2[$j]){
            $j++;
        }
    }
    return array_unique($res);
}
Nach dem Login kopieren

Verwendung:

$nums2 = [2,4,6,7,8,99];
$nums1 = [1,2,5,9,9,66,89,90,99,99];
var_dump(intersection($nums1, $nums2));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Komplexitätsanalyse:

Zeitkomplexität: O(nlogn)

Weitere PHP-bezogene Kenntnisse finden Sie unter PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von drei Methoden zum Ermitteln der Schnittmenge zweier Arrays in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage