-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaxGap
More file actions
49 lines (41 loc) · 1.22 KB
/
Copy pathmaxGap
File metadata and controls
49 lines (41 loc) · 1.22 KB
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
# -*- coding: utf-8 -*-
import random
def GenerateRandomList(number, size):
temp = []
random_legth = random.randint(0, size)
current_length = 0
while current_length < random_legth:
temp.append(random.randint(1, number))
current_length += 1
return temp
def maxGap(arr):
length= len(arr)
if arr is None or length < 2:
return 0
max_val = max(arr)
min_val = min(arr)
max_list = [min_val for _ in range(length + 1)]
min_list = [max_val for _ in range(length + 1)]
hasNumber = [False for _ in range(length + 1)]
print(hasNumber)
for i in range(length):
index = which_bucket(arr[i], length, min_val, max_val)
hasNumber[index] = True
min_list[index] = min(arr[i], min_list[index])
max_list[index] = max(arr[i], max_list[index])
res = set()
i = 0
while i < length:
if hasNumber[i]:
j = i + 1
while not hasNumber[j]:
j += 1
res.add(min_list[j] - max_list[i])
i += 1
return max(res)
# length 为数组的长度
def which_bucket(num, length, min_val, max_val):
return (num - min_val) * length // (max_val - min_val)
l = [3, 2, 1, 6, 7, 12]
ans = maxGap(l)
print(ans)