題目:
小釦在秋日市集選擇了一家早餐攤位,一維整型陣列 staple 中記錄了每種主食的**,一維整型陣列 drinks 中記錄了每種飲料的**。小釦的計畫選擇乙份主食和一款飲料,且花費不超過 x 元。請返回小釦共有多少種購買方案。
注意:答案需要以 1e9 + 7 (1000000007) 為底取模,如:計算初始結果為:1000000008,請返回 1
思路:剛開始採用了暴力解法,然後顯示超時了
class
solution
:def
breakfastnumber
(self, staple: list[
int]
, drinks: list[
int]
, x:
int)
->
int:
m=len(staple)
n=len(drinks)
res=
0for i in
range
(m):
for j in
range
(n):
if staple[i]
+drinks[j]
<=x:
res+=
1 a=
int(
1e9)
return res%a
轉而改進,先對陣列排序,對drinks逆序判斷:若drinks中最小的元素與當前staple元素相加都大於x,那staple之後的元素則不用再判斷了。
解答:
class
solution
:def
breakfastnumber
(self, staple: list[
int]
, drinks: list[
int]
, x:
int)
->
int:
staple.sort(
) drinks.sort(
) m=
len(staple)
j=len(drinks)-1
res=
0 a=
1000000007
for i in
range
(m):
while j>=
0and staple[i]
+drinks[j]
>x:
j-=1if j==-1
:break
res=
(res+j+1)
%a
return res
LCP 18 早餐組合
小釦在秋日市集選擇了一家早餐攤位,一維整型陣列 staple 中記錄了每種主食的 一維整型陣列 drinks 中記錄了每種飲料的 小釦的計畫選擇乙份主食和一款飲料,且花費不超過 x 元。請返回小釦共有多少種購買方案。注意 答案需要以 1e9 7 1000000007 為底取模,如 計算初始結果為 1...
LCP 18 早餐組合
小釦在秋日市集選擇了一家早餐攤位,一維整型陣列 staple 中記錄了每種主食的 一維整型陣列 drinks 中記錄了每種飲料的 小釦的計畫選擇乙份主食和一款飲料,且花費不超過 x 元。請返回小釦共有多少種購買方案。注意 答案需要以 1e9 7 1000000007 為底取模,如 計算初始結果為 1...
LCP 18 早餐組合(LEETCODE)
lcp 18.早餐組合 小釦在秋日市集選擇了一家早餐攤位,一維整型陣列 staple 中記錄了每種主食的 一維整型陣列 drinks 中記錄了每種飲料的 小釦的計畫選擇乙份主食和一款飲料,且花費不超過 x 元。請返回小釦共有多少種購買方案。注意 答案需要以 1e9 7 1000000007 為底取模...