def min_diff(L):
n = len(L)
if n > 1:
L = sorted(L)
md = L[1] - L[0]
i = 2
while i < n:
d = L[i] - L[i - 1]
if d < md:
md = d
i += 1
return md
else:
raise ValueError("Bad input, at least there is 2 elements in " + str(L))
2
def intersection_v1(A, B):
A = sorted(A)
B = sorted(B)
ret = []
i = 0
j = 0
while i < len(A) and j < len(B):
if A[i] < B[j]:
i += 1
elif A[i] > B[j]:
j += 1
else:
ret.append(A[i])
i += 1
j += 1
return ret
def intersection_v2(A, B):
S = set(B)
ret = []
for a in A:
if a in S:
ret.append(a)
return ret
3
def min_max(L):
n = len(L)
ret = None
if n > 1:
big = L[0]
small = L[1]
if big < small:
big, small = small, big
i = 2
for j in range((n - 2)//2):
if L[i] < L[i + 1]:
if small > L[i]:
small = L[i]
if big < L[i + 1]:
big = L[i + 1]
else:
if small > L[i + 1]:
small = L[i + 1]
if big < L[i]:
big = L[i]
i += 2
if i < n:
if small > L[i]:
small = L[i]
elif big < L[i]:
big = L[i]
ret = (small, big)
else:
if n == 1:
ret = (L[0], L[0])
return ret