【发布时间】:2019-09-29 09:49:50
【问题描述】:
给定一个数组 A,有 N 个整数 A1, A2,..., An。如果 Ai =Aj +1 或 Aj= Ai +1,则称数组 Ai 和 Aj 的两个元素相似。此外,相似性如下传递性。如果 Ai 和 Aj 相似并且 Aj 和 Ak 相似,那么 Ai 和 Ak 也相似。 下面是我的代码,时间复杂度更高,我们怎样才能减少它?
def SimilarElementsPairs (A,N):
# Write your code here
count=0
map1=[]
for i in range(0,N):
for j in range(0,N):
if((A[i]==A[j]+1) or (A[j]==A[i]+1)):
count+=1
map1.append((i,j))
for k in range(0,N):
if((((A[i]==A[j]+1) or (A[j]==A[i]+1)) and ((A[k]==A[j]+1) or (A[j]==A[k]+1)))) :
count+=1
map1.append((i,k))
if((((A[i]==A[j]+1) or (A[j]==A[i]+1)) and ((A[j]==A[k]+1) or (A[k]==A[j]+1)))):
count+=1
#map1.append((i,k))
if((((A[i]==A[j]+1) or (A[j]==A[i]+1)) and ((A[k]==A[i]+1) or (A[i]==A[k]+1)))):
count+=1
map1.append((j,k))
list1 = set(map(lambda x: tuple(sorted(x)),map1))
list2=[]
for x,y in list1:
if abs(x-y)>0:
list2.append((x,y))
return len(list2)
N = input()
A = map(int, raw_input().split())
out_ = SimilarElementsPairs(A,N)
print out_
【问题讨论】:
-
到目前为止你尝试了什么?
-
我已经更新了我的代码,但它提供了 TLE。
-
@khelwood 我更新了缩进。
-
给我那个 HackerRank 问题的链接,我会以更有效的方式帮助你。
标签: python python-2.7 performance big-o