2100. 适合打劫银行的日子;2080. 区间内查询数字的频率;1774. 最接近目标价格的甜点成本

2100. 适合打劫银行的日子

核心思想:枚举+前后缀。我们只需要预处理到第i天的前后缀,然后枚举一边i即可。最开始的时候我是分开求前后缀的,这里可以把前后缀一起进行处理。

2100. 适合打劫银行的日子;2080. 区间内查询数字的频率;1774. 最接近目标价格的甜点成本_第1张图片

2080. 区间内查询数字的频率

核心思想:二分。其实有一种做法是枚举,但是加上查询的时间复杂度会超时,那么我们就需要对它进行优化,当时我想过用二分来做但是没想到,这里有个很好的方法就是将相同值的下标存储起来,然后再去二分。

2100. 适合打劫银行的日子;2080. 区间内查询数字的频率;1774. 最接近目标价格的甜点成本_第2张图片

1774. 最接近目标价格的甜点成本

核心思想:动态规划。其实这题数据范围比较小,用递归也可以做,递归, # 表示从下标i的配料开始选择,当前的成本为cost,我们需要先处理上面选过的cost然后再判断能不能选择(代码容易错的地方),其实递归比较好理解;但是如果把两份改成几份,我感觉还是要用0-1背包的方法来做,首先将配料复制几份,我当时做的时候也是想到把配料复制一份,这里动态规划代码的细节挺多的,核心其实就是背包问题,可以先做一下背包在来做这个可能好理解一点。

递归:

2100. 适合打劫银行的日子;2080. 区间内查询数字的频率;1774. 最接近目标价格的甜点成本_第3张图片

动态规划:

2100. 适合打劫银行的日子;2080. 区间内查询数字的频率;1774. 最接近目标价格的甜点成本_第4张图片

你可能感兴趣的:(python)