Python程式:檢查我們是否可以在我們喜歡的日子吃喜歡的糖果
假設我們有一個包含正值的陣列candiesCount,其中candiesCount[i]表示我們擁有的第i種類型的糖果數量。我們還有另一個名為queries的陣列,其中queries[i]有三個引數[favoriteType_i, favoriteDay_i, dailyCap_i]。我們有一些規則
我們從第0天開始吃糖果。
除非我們已經吃掉了前i-1種類型的糖果,否則我們不能吃任何第i種類型的糖果。
我們必須每天至少吃一顆糖果,直到我們把它們都吃完。
在遵循這些規則的情況下,我們必須為每個查詢結果建立一個布林值陣列,並且第i個條目為真,如果我們可以在第favoriteDay_i天吃第favoriteType_i種類型的糖果,而每天吃的糖果不超過dailyCap_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型別的糖果,我們將在第
我們每天最多可以吃4顆糖果。如果我們每天吃4顆糖果,我們將在第0天吃4顆0型別的糖果,在第1天吃4顆0型別和1型別的糖果。然後在第2天,我們只能吃4顆1型別和2型別的糖果,所以我們不能在第2天吃4型別的糖果。
我們每天可以吃1顆糖果,我們將在第13天吃1顆2型別的糖果。
為了解決這個問題,我們將遵循以下步驟:
sumcandy := 一個包含單個元素candiesCount[0]的列表
index:= 1
當index < candiesCount的大小,執行
在sumcandy的末尾插入(sumcandy[index-1] + candiesCount[index])
index := index + 1
在sumcandy的末尾插入0
res:= 一個新的列表
對於queries中的每個each,執行
typ:= each[0]
day:= each[1]
cap:= each[2]
如果day+1 > sumcandy[typ] 或 (day+1)*cap <= sumcandy[typ-1],則
在res的末尾插入False
否則,
在res的末尾插入True
返回res
示例
讓我們看看以下實現以獲得更好的理解:
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]
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP