在 Python 中检查我们是否可以在我们最喜欢的一天吃最喜欢的糖果的程序
假设我们有一个正数数组candiesCount,其中candiesCount[i]表示我们拥有的第i种糖果的数量。我们还有另一个称为查询的数组,其中查询[i]有三个参数[favoriteType_i、favoriteDay_i、dailyCap_i]。我们有一些规则:
我们从第0天开始吃糖果。
我们不能吃任何i类型的糖果,除非我们已经吃掉了之前i-1类型的所有糖果。
我们必须每天至少吃一颗糖果,直到我们吃完所有糖果。
保持这些规则,我们必须为每个查询结果创建一个布尔值数组,如果我们可以在最喜爱的一天中吃掉一个最喜欢的类型的糖果而不吃超过dailyCap_i的糖果,那么第i个条目为真。我们可以在同一天吃不同类型的糖果,遵循规则2。
所以,如果输入像candiesCount=[7,4,5,3,8],queries=[[0,2,2],[4,2,4],[2,13,100]],那么输出将是[true,false,true]因为
如果我们在第0天和第1天吃2个0型糖果,我们将在第1天吃一个0型糖果
我们每天最多可以吃4颗糖果。如果我们每天吃4颗糖,我们会在第0天吃4颗0型糖,在第1天吃4颗0型1型糖。那么到了第2天,我们只能吃4颗1型2型糖糖果,所以我们不能在第2天吃类型4的糖果。
我们每天可以吃1颗糖,第13天我们会吃1颗2型糖。
示例
让我们看看以下实现以获得更好的理解-
def solve(candiesCount, queries):
sumcandy = [candiesCount[0]]
index=1
while index < len(candiesCount):
sumcandy.append(sumcandy[index-1] + candiesCount[index])
index+=1
sumcandy.append(0)
res=[]
for each in queries:
typ=each[0]
day=each[1]
cap=each[2]
if day+1 > sumcandy[typ] or (day+1)*cap <= sumcandy[typ-1]:
res.append(False)
else:
res.append(True)
return res
candiesCount = [7,4,5,3,8]
queries = [[0,2,2],[4,2,4],[2,13,100]]
print(solve(candiesCount, queries))输入
[7,4,5,3,8], [[0,2,2],[4,2,4],[2,13,100]]输出结果
[True, False, True]