中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么求兩數組的交集?

發布時間:2020-05-21 11:46:26 來源:億速云 閱讀:232 作者:Leah 欄目:編程語言

php怎么求兩數組的交集?這篇文章運用了實例代碼展示,代碼非常詳細,可供感興趣的小伙伴們參考借鑒,希望對大家有所幫助。

題目:給定兩個數組,編寫一個函數來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1],nums2 = [2,2]

輸出: [2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出: [9,4]

說明:

輸出結果中的每個元素一定是唯一的。

我們可以不考慮輸出結果的順序。

解法一:迭代一個數組

思路分析:

迭代一個數組,判斷是否存在另外一個數組

PHP 代碼實現:

/**
 * @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);
}

使用:

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

復雜度分析:

時間復雜度:O(mn)

解法二:內置數組函數

思路分析:

使用array_intersect()函數進行取數組的交集,然后再使用array_unique()去重

PHP 代碼實現:

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

使用:

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

解法三:暴力解法

思路分析:

先把兩個數組合并為一個數組,再兩次循環遍歷查找

PHP 代碼實現:

/**
 * @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);
}

使用:

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

復雜度分析:

時間復雜度:O(n^2)

解法四:雙指針

思路分析:

先把兩個數組排序,通過雙指針往前推來進行查找

PHP 代碼實現:

/**
 * @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);
}

使用:

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

復雜度分析:

時間復雜度:O(nlogn)

以上就是php求兩數組的交集的方法,代碼詳細清楚,如果在日常工作遇到這個問題,希望你能通過這篇文章解決問題。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云龙县| 宿迁市| 兴义市| 炎陵县| 那曲县| 丹棱县| 祁阳县| 新民市| 武胜县| 保德县| 江安县| 巴彦淖尔市| 高淳县| 剑阁县| 呼图壁县| 辉县市| 吴堡县| 太和县| 沾益县| 专栏| 讷河市| 象山县| 万安县| 宜川县| 威远县| 红河县| 安龙县| 峨眉山市| 潼南县| 来凤县| 林州市| 静海县| 苗栗市| 泸州市| 福清市| 沧源| 增城市| 内黄县| 丰原市| 孝感市| 延吉市|