日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

350. Intersection of Two Arrays II 两个数组的交集 II

發(fā)布時間:2024/5/7 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 350. Intersection of Two Arrays II 两个数组的交集 II 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Title

給定兩個數(shù)組,編寫一個函數(shù)來計算它們的交集。

示例 1:

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

示例 2:

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

說明:

輸出結(jié)果中每個元素出現(xiàn)的次數(shù),應(yīng)與元素在兩個數(shù)組中出現(xiàn)的次數(shù)一致。
我們可以不考慮輸出結(jié)果的順序。

排序

Solve

如果兩個數(shù)組是有序的,則可以便捷地計算兩個數(shù)組的交集。

首先對兩個數(shù)組進(jìn)行排序,然后使用兩個指針遍歷兩個數(shù)組。

初始時,兩個指針分別指向兩個數(shù)組的頭部。每次比較兩個指針指向的兩個數(shù)組中的數(shù)字,如果兩個數(shù)字不相等,則將指向較小數(shù)字的指針右移一位,如果兩個數(shù)字相等,將該數(shù)字添加到答案,并將兩個指針都右移一位。當(dāng)至少有一個指針超出數(shù)組范圍時,遍歷結(jié)束。

Code

def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:nums1.sort()nums2.sort()i, j, length1, length2, ans = 0, 0, len(nums1), len(nums2), []while i < length1 and j < length2:if nums1[i] == nums2[j]:ans.append(nums1[i])i += 1j += 1elif nums1[i] < nums2[j]:i += 1else:j += 1return ans

復(fù)雜度分析

時間復(fù)雜度:O(mlogm+nlogn),其中 m 和 n 分別是兩個數(shù)組的長度。對兩個數(shù)組進(jìn)行排序的時間復(fù)雜度是 O(mlogm+nlogn),遍歷兩個數(shù)組的時間復(fù)雜度是 O(m+n),因此總時間復(fù)雜度是 O(mlogm+nlogn)。

空間復(fù)雜度:O(min(m,n)),其中 m 和 n 分別是兩個數(shù)組的長度。

總結(jié)

以上是生活随笔為你收集整理的350. Intersection of Two Arrays II 两个数组的交集 II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。