打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python|判断有几种早餐组合购买方案
问题描述
小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。
注意:
答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1
提示:
1 <= staple.length <= 10^5
1 <= drinks.length <= 10^5
1 <= staple[i],drinks[i] <= 10^5
1 <= x <= 2*10^5
解决方案
首先可知买饮料的价格会小于等于总费用减去购买食物的支出额,所以可用两次二分查找进行解决;第一个二分查找得到买食物所能支出的最大金额(需保证所剩金额足够购买饮料)、第二个二分查找得到买饮料所能支出的最大金额。
代码如下:
from bisect import bisect_right
class Solution:
def breakfastNumber(self, staple, drinks, x):
s = 0
staple.sort()
drinks.sort()
staple_len = bisect_right(staple, x - drinks[0])
for food in staple[:staple_len]:
i = bisect_right(drinks, x - food)
s += i
return s % 1000000007
if __name__ == '__main__':
solution=Solution()
a=solution.breakfastNumber()
print(a)
结语
本题关键在于解决食物和饮料的搭配,需要灵活运用二分查找来分别得到购买食物和饮料所能支出的最大金额,第一次运用时需保证剩余资金足够购买饮料。
实习编辑:欧洋
责编 :涂瀚鑫
能力越强,责任越大。
实事求是,严谨细致。
(where2go团队)
微信号:算法与编程之美
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
LeetCode 18. 早餐组合
CNN盘点:中国人不能没有的18种饮料[8]
drink
日常英语情景对话08|Drinks 饮料
【中考倒计时】52天打卡,我有话说
雅思口语 food
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服