美团才1小时啊
刚刚笔试完美团,做前面题目的时候有道题卡了,就是最基础的那个出栈入栈交替的,怎么看了下都准确的呀。
做编程题的时候才发现就剩20分钟了,你妹的,第一题都没来得及AC,才发现第二题这么简单,不会把第二题放前面的啊。
看到有人问第二题。
先说下思路:
假如奇数个数数组,[1,2,3,4,5],-->[1,3,5,2,4],
假如偶数个数数组,[1,2,3,4,5,6] -->[1,3,5,2,4,6],
转化为求长度为2的连续子数组和的最大值。
python3代码
def fuzhu(A,count):
'''
求A数组中连续count个子数组和最大值
'''
n=len(A)
s=sum(A[:count])
M=s
for i in range(count,n):
s+=A[i]-A[i-count]
if A[i]>A[i-count]:
M=max(s,M)
return M
def ti2(A):
n=len(A)
B=[0]*n
if n%2==0:
d=n//2
for i in range(0,d):
B[i]=A[2*i]
B[i+d]=A[2*i+1]
else:
d=n//2
for i in range(0,d):
B[i]=A[2*i]
B[i+d+1]=A[2*i+1]
B[d]=A[-1]
return fuzhu(B,d)
