题解 | #合唱队#【左右互博法】

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

把两个双重for循环做成一个,但是依旧超时。

n = int(input())
hgt = list(map(int, input().split(' ')))
ldp = [1] * n 
rdp = [1] * n 
for i in range(1, n):
    for j in range(i):
        ii, jj = -i - 1, -j - 1
        if hgt[i] > hgt[j]:
            ldp[i] = max(ldp[i], ldp[j] + 1)
        if hgt[ii] > hgt[jj]:
            rdp[ii] =max(rdp[ii], rdp[jj] + 1)

print(n - max([i + j - 1 for i, j in zip(ldp, rdp)]))
全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务