题目描述:
# '''
# case 1:
# '''
# S1 = [1,2]
# S2 = [1,2]
# S3 = [3,4,5]
# S4 = [3,4]
# S5 = [3,5]
# S6 = [6,7]
# S7 = [7,8]
'''
case 2:
我举的那个例子是个特殊情况,那个例子中S3,S4,S5同时相交于元素3,
这种肯定是要求并集的,但还有一种情况也要求并集,这种情况就是:
S3∩S4非空,S4∩S5非空,但S3∩S4∩S5是空集,
这种情况也要计算S3∪S4∪S5
'''
S1=[1,2]
S2=[1,2]
S3=[2,3,4,5]
S4=[3,4]
S5=[3,5]
S6=[6,7]
S7=[7,8]
S=[S1,S2,S3,S4,S5,S6,S7]
P1=[]
P2=[]
foriinS:
j=i
forjinS:
iflen(S)==1:
break;
else:
iflen(list(set(S[]).intersection(set(S[1]))))!=:
P1=list(set(S[]).union(set(S[1])).union(set(P1)))
if(len(S)==2):
print(P1)
else:
P2=P1
P1=[]
print(P2)
delS[]
感悟:
1.python列表操作里不允许变量类型的指针
2.case1类似于冒泡排序操作,这个是满足题目要求的,但是为了将所有的非空数组并起来,就有case2的情况,只不过修改一行代码
3.为了列表操作方面,使用了delete来移动指针,我认为也可以用循环左移或右移来做
4.当相邻两个数组没有交集,将结果输出
存在问题:这个程序只能向后进行查找,如果需要每一个从头,去掉j=i这一行,不过实际中也够用了
领取专属 10元无门槛券
私享最新 技术干货