-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtask3.py
75 lines (55 loc) · 1.38 KB
/
task3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
maxlen=100000
minval=-1000000000
maxval=1000000000
def solution(A):
premax= None
postmax = None
maxabs = 0
tmpabs = 0
maxA=[]
length=len(A)
#not good list
if length < 2 or length > maxlen:
return 0
#build max val list for #n element
for i,val in enumerate(A):
if val <minval or val >maxval:
return 0
if premax == None or val > premax:
premax = val
maxA.append(premax)
#print maxA
i=length-1
for val in A[::-1]:
if postmax == None or postmax < val:
postmax = val
#maxA[i] had the max val before #n
#and postmax had max val after #n
tmpabs = abs(maxA[i]-postmax)
if tmpabs > maxabs:
maxabs = tmpabs
#print i,maxabs,postmax,maxA[i]
i-=1
return maxabs
def run_test():
test_suit = (
[],
[1],
[minval],
[maxval],
[minval-1],
[maxval+1],
[1,1],
[1,2],
[1,2,3],
[-3,-2,-1,1,2,3],
[3,2,1,0,-1,-2,-3],
[3,2,1,5,-1,-2,-3],
[0,0,0,0,0,0,0,0],
[0,0,0,1,0,0,0],
[minval,maxval],
)
for tc in test_suit:
print "test data:",tc, "solution data:",solution(tc)
if __name__=="__main__":
run_test()