Skip to content

Latest commit

 

History

History

1802.Maximum-Value-at-a-Given-Index-in-a-Bounded-Array

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

1802.Maximum-Value-at-a-Given-Index-in-a-Bounded-Array

本题很容易想到贪心的策略。既然要使得所用的数字总和不超过maxSum,那我们就省着用。怎么用呢?令index那个位置最高,然后往两边依次递减,每移一个位置就减1。直至递减到1之后,如果还需要再往两边延伸的话,就继续维持1。这个方案是固定index的高度,同时满足所有条件下、数字总和最小的决策。反之,如果固定数字总和,那么这个方案就是满足所条件下、index位置最高的决策。

我们用二分搜值的方法,探索index位置的高度。假设当高度为h时,判断该贪心决策所需要的数字总和是否小于等于maxSum。是的话,那么h可能是解,但还可以往大猜;反之,那么h不是解,且必须往小猜。

在检验函数中,我们需要考虑两个等差数列。前者从index位置的h,往前逐位递减,直至递减至1或者数组的第一个位置;后者从index位置的h,往后逐位递减,直至递减至1或者数组的最后位置。计算两个等差数列之和。另外注意,等差数列降至1时,如果还有元素需要填充1,那么需要正确计算它们的个数。