在傳統的計算機語言中,有些問題解決是“硬”算,而在python中,有許多問題中,數據結構能起很大作用,這些結構的合理應用,能夠節約時間。在python中,這些現象很常見。本文中,我們基本上將使用兩種不同的數據結構來簡化一個問題。
在一個序列中,我們將前列中某兩個值的和,與後續某個元素值相等,將所有這種元素打印出來。比如:
輸入序列: a=[1,2,3,4,5,6]
輸出元素對: (1 2) (1 3) (1 4) (1 5) (2 3) ( 2 4)
最基本的方法將包括三環。導致時間復雜度為 O(n^3)。
def suminarray(a):
k = 0
lis = []
n = len(a)
for i in range(n - 1):
for j in range(i + 1, n):
for l in range(n):
if (a[i] + a[j] == a[l]):
lis.append((a[i], a[j]))
k += 1
if (k > 0):
return lis
else:
return ("NOT EXIST")
ss = [1,2,3,4,5,6,7]
tt = suminarray(ss)
代替第三個循環,我們可以使用數據結構來存儲數組值,以便在搜索時輕松檢索它們。
我們將首先使用一個列表(原始數組本身)
def suminarray(a):
k=0
lis=[]
n=len(a)
for i in range(n-1):
for j in range(i+1,n):
if (a[i]+a[j]) in a:
lis.append([a[i],a[j]])
k+=1
if(k>0):
return lis
else:
return ("NOT EXIST")
我們現在將使用搜索,它在搜索元素時被認為是最有效的數據結構。
def suminarray(a):
k=0
lis=[]
n=len(a)
s={i : 1 for i in a}
print(s)
for i in range(n-1):
for j in range(i+1,n):
if s.get((a[i]+a[j]),0)==1:
lis.append([a[i],a[j]])
k+=1
if(k>0):
return lis
else:
return ("NOT EXIST")
ss = [1,2,3,4,5,6,7]
tt = suminarray(ss)
這篇文章就到此為止。更多的關於字典的用途如下:
Python字典包含了以下內置函數:
Python字典包含了以下內置方法: