-
o(n)解法
利用Y来存储以当前i层为基准,所有员工需要走的楼层
N1 i层以下所有人数
N2 第i层的人数
N3 i层以上的人数
可以得出:
Y = Y(i-1需要走的楼层)+N1-N2-N3
求解即可
#coding=utf-8
#author='HL'
class Solution():
def solve(self,n_Person):
'''
:param n_Person:type--list,每层电梯停留人数
:return:
'''
Y =
for i in range(,len(n_Person)):
Y+=(i-)*n_Person[i]
n_Person[i]+=n_Person[i-]
print '到第i层为止,目前的人数为:'
print n_Person
print '第2层停止,需要走的步数:'
print Y
res = Y
number =
'''
N1 i层以下所有人数
N2 第i层的人数
N3 i层以上的人数
'''
for i in range(,len(n_Person)):
N1 = n_Person[i-]
N2 = n_Person[i]-n_Person[i-]
N3 = n_Person[-]-n_Person[i]
Y = Y+N1-N2-N3
if Y<res:
res = Y
number = i
else:
break
return res,number
zz = Solution()
print zz.solve([,,,,,,])