射击训练,需要给每个士兵发子弹,发子弹的个数规则是根据士兵的训练成绩给定的,传入士兵的训练成绩,要求相邻士兵中,成绩好的士兵的子弹数必须更多,每个士兵至少分配一个子弹。
输入描述:
输入每个士兵的训练成绩,如 1,2,3,代表 3 位士兵的成绩分别为 1,2,3
输出描述:
最少分配的子弹数
示例 1:
输入:1,2,2
输出:4
1
AlisaDestiny 2020-07-27 21:35:49 +08:00 2
这个就是求数据的极值点,最小值处的值都是 1,最大值处的值是 n = max(到左极值距离,到右极值距离),距离远的一侧从最小值处到最大值处需要的子弹数是 sum(1..n),另一侧是 sum(1..到极大值距离-1)
|
2
AlisaDestiny 2020-07-27 21:38:38 +08:00
需要的子弹总数就是将各个区段的和值相加。
|
3
nthhdy 2020-07-27 22:00:11 +08:00
如果相邻的分数相同,应该是没有约束的
|
4
warush 2020-07-28 01:51:24 +08:00 via iPhone 1
这不就是 leetcode 上的 candy,从左往右便利一下给最低的子弹,然后再从有往左边遍历一遍
|