求两个列表的交集(Python)

如果s的当前元素小于t的当前元素,则应该进一步考虑s的下一个元素;他中当前元素较小的也是同样的道理;只有两个两个列表的当前元素相等时,将其加入到交集中。假设s、t中的元素个数分别为m和n,主循环的每次迭代总能处理掉两个集合中的至少一个元素,所以此算法的时间复杂度是O(m+n)。

def findIntersection(s,t):  
    s.sort()  
    t.sort()  
    r = []  
    i, j = 0, 0  
    while i < len(s) and j <len(t):  
        if s[i] < t[j]:  
            i += 1  
        elif s[i] > t[j]:  
            j += 1  
        else:   #s[i] == t[j]  
            r.append(s[i])  
            i += 1  
            j += 1  
    return r  


猜你喜欢

转载自blog.csdn.net/qq_34840129/article/details/80708198
今日推荐