数组
1. 给一个数组,判断能否分成三部分,每部分的和相同
O ( N ) O(N) O(N)复杂度
def threePart(array):
if not array or len(array)<3:
return False
data = array
# 累加和
for i in range(1,len(array)):
data[i] += data[i-1]
print(data)
part_int = data[-1]//3
part = data[-1]/3
if part - part_int == 0.0:
part = part_int
else:
return False
print('part sum is:'+str(part))
index1 = -1
for i in range(len(data)-2):
if data[i] == part:
index1 = i
print(index1)
break
if index1 == -1:
2. 数组分成两部分,平均值相差最大的值。
网上找到的,不知道这个题想让返回什么,姑且求分割点和平均值的差吧
简单遍历的。不知道有没有更好的办法或者有没有坑。
请指教
def max_avg(array):
avg_dif = 0
index = 1
for i in range(1,len(array)-1):
lis1 = array[:i]
lis2 = array[i:]
avg1 = sum(lis1)/len(lis1)
avg2 = sum(lis2)/len(lis2)
dif = abs(avg1-avg2)
if dif>avg_dif:
index = i
avg_dif = dif
print(avg1)
print(avg2)
return index,avg_dif
if __name__ =='__main__':
array = [1,2,3,4,1,3,55]
index,av