关注
第二题,考完才写出来,不知道对不对,我想的是用两个数组dp1[i]表示以第i个数字结尾且第一个数字最大的子序列个数,然后从右往左再来个dp2。那么最大值为i的子序列个数为2*(dp1[i] + dp2[i]),就是当前往左的序列个数dp1[i]加上当前往右的序列个数dp2[i],然后左边的所有数字组成的序列可逐个往右扩展dp2[i]个,右边往左扩展dp1[i]个,两者重复一个,但是少算了一个数字本身,所以抵消了。但是当其中一个为0的时候,则只保留另一个数组的值+1(数字本身)。
dp1 = [0]*n
dp2 = [0]*n
for i in range(1, n):
if nums[i]>nums[i-1]: dp1[i] = dp1[i-1]+1
for i in range(n-2, -1, -1):
if nums[i]>nums[i+1]: dp2[i] = dp2[i+1] + 1
sums = sum(range(n+1))
res = 0
for i in range(len(dp1)):
if dp1[i] == 0 or dp2[i] == 0:
res += (nums[i] * (dp1[i] + dp2[i] + 1)) / sums
else:
res += (nums[i]*(2*(dp1[i] + dp2[i])))/sums
print(round(res, 6))
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作,行业重要还是岗位重要? #
12010次浏览 224人参与
# 来聊聊机械薪资天花板是哪家 #
110071次浏览 720人参与
# 机械人怎么评价今年的华为 #
188335次浏览 1502人参与
# 硬件兄弟们 甩出你的华为奖状 #
93065次浏览 670人参与
# 机械人与华为的爱恨情仇 #
103290次浏览 921人参与
# 24届硬件人与华为的爱恨情仇 #
117904次浏览 962人参与
# 机械专业只有考研才有出路吗 #
93116次浏览 850人参与
# 你最满意的offer薪资是哪家公司? #
15733次浏览 119人参与
# 金融财会交流会 #
98764次浏览 361人参与
# 国企还是互联网,你怎么选? #
123827次浏览 960人参与
# 盲审过后你想做什么? #
13524次浏览 119人参与
# 五一之后,实习真的很难找吗? #
49845次浏览 353人参与
# 外包能不能当跳板? #
22754次浏览 192人参与
# 机械人还在等华为开奖吗? #
211951次浏览 1088人参与
# 设计人如何选offer #
99066次浏览 694人参与
# 国企/银行/研究所公司爆料 #
121498次浏览 742人参与
# 潍柴工作体验 #
17297次浏览 17人参与
# 摸鱼被leader发现了怎么办 #
41363次浏览 316人参与
# Offer比较,求稳定还是求发展 #
39388次浏览 226人参与
# 运营面经 #
98752次浏览 1201人参与