Python實現兩個有序集合的交集和並集

2021-10-02 03:13:08 字數 1115 閱讀 3443

本文通過python實現簡易的集合交並演算法,輸入是兩個以遞增順序排序的集合,輸出它們的有序交集和有序並集。

def union(s1, s2):

o =

i = j = 0

s1_n = len(s1)

s2_n = len(s2)

while i < s1_n and j < s2_n:

if s1[i] < s2[j]:

i += 1

elif s1[i] == s2[j]:

i += 1

j += 1

else:

j += 1

top = none

if o: top = o[-1]

if i < s1_n: o.extend(s1[i:] if s1[i] != top else s1[i+1:])

if j < s2_n: o.extend(s2[j:] if s2[j] != top else s2[j+1:])

return o

演算法**:

演算法** 

兩個有序集合求交集

方案一 暴力法,for for,時間複雜度o n n 當資料量很大時,不可取 方案二 拉鍊法 有序集合1 有序集合2 兩個指標指向首元素,比較元素的大小 1 如果相同,放入結果集,隨意移動乙個指標 2 否則,移動值較小的乙個指標,直到隊尾 這種方法的好處是 1 集合中的元素最多被比較一次,時間複雜度...

Python演算法 如何求兩個有序集合的交集

兩個有序集合,集合中每個元素都是一段範圍,求其交集。例如集合和的交集為。最簡單方法就是遍歷兩個集合,針對集合中每個元素判斷是否有交集,如果有,則求其交集。方法一沒有利用集合有序的特點,因此,不是最佳的方法。假設兩個集合s1,s2,當前比較集合為s1 i 與s2 j 其中i與j分別是集合s1與s2的下...

領扣 合併兩個有序陣列 Python實現

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例 輸...