• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python还能判断出早餐组合购买方案?吃早餐再也不愁不知道吃什么了

python 搞java代码 3年前 (2022-05-21) 11次浏览 已收录 0个评论

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

本篇文章来自腾讯云 作者:算法与编程之美

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

问题描述

小扣在秋日市集选择了一家早餐摊位,一维整型数组 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

www#gaodaima.com来源gao@daima#com搞(%代@#码@网搞代码

 

解决方案

首先可知买饮料的价格会小于等于总费用减去购买食物的支出额,所以可用两次二分查找进行解决;第一个二分查找得到买食物所能支出的最大金额(需保证所剩金额足够购买饮料)、第二个二分查找得到买饮料所能支出的最大金额。

代码如下:

<span>from</span> bisect <span>import</span><span> bisect_right
</span><span>class</span><span> Solution:
    </span><span>def</span><span> breakfastNumber(self, staple, drinks, x):
        s </span>=<span> 0
        staple.sort()
        drinks.sort()
        staple_len </span>= bisect_right(staple, x -<span> drinks[0])
        </span><span>for</span> food <span>in</span><span> staple[:staple_len]:
            i </span>= bisect_right(drinks, x -<span> food)
            s </span>+=<span> i
        </span><span>return</span> s % 1000000007
<span>if</span> <span>__name__</span> == <span>"</span><span>__main__</span><span>"</span><span>:
    solution</span>=<span>Solution()
    a</span>=<span>solution.breakfastNumber()
    </span><span>print</span>(a)

 

结语

本题关键在于解决食物和饮料的搭配,需要灵活运用二分查找来分别得到购买食物和饮料所能支出的最大金额,第一次运用时需保证剩余资金足够购买饮料。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python还能判断出早餐组合购买方案?吃早餐再也不愁不知道吃什么了

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址