有一道题目面试中碰到的,不会做,这边想问下怎么做呢?

桌子上有n个瓶子,瓶子编号从1到n,第i个瓶子里装mi克(mi为非负整数)的水,小明每次选择一个区间【i,k】(1<=i<=k<=n)编号中的水瓶,并将每个水瓶里的水放出1克,希望你设计一种方法,使小明可以在最少的次数里将所有瓶子里的水放完。
样例:
5个瓶子
每个瓶子分别装水 3 4 2 3 1
一个可行方案
【1,5】
【1,4】
【1,2】
【2,2】
【4,4】
小明要5次能把所有水放完
输入包括两行 格式为:
5
3 4 2 3 1
输出一个整数
5

请各位大佬给个思路或者简单的代码就可以,我的思路是感觉随着水越来越少,数组会被分成好几份,然后次数也就会变多,但是怎么算法实现没想出来。

#面试题目#
全部评论
从边界贪心呀
点赞
送花
回复 分享
发布于 2020-09-19 18:44
边界能拉多长拉多长,维护可能需要线段树或者树状数组一些高级数据结果
点赞
送花
回复 分享
发布于 2020-09-19 18:45
秋招专场
校招火热招聘中
官网直投

相关推荐

凉城学Java:给你翻译一下,我这是培训班,你要上学6-8个月,然后这期间产生的费用先不跟你说,上完学好帮你投简历,能不能有看你命,上了大概率外包。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务