小扣的早餐组合问题详解:从暴力到高效解法
在秋日市集,小扣想要搭配一份早餐。他从菜单上选出若干种主食和饮料,每种都有对应价格。他的目标是在不超过预算的前提下,找到所有可行的主食+饮料组合数。
这道题是一道经典的双数组配对问题,既考察基本的数组操作,又涉及优化技巧如前缀和、排序与二分等,是一道非常适合算法练习的好题。
🧩 题目描述
给定两个整数数组 staple
和 drinks
,分别表示主食和饮料的价格。小扣的早餐计划是从 staple
中选一份主食,从 drinks
中选一份饮料,且总花费不超过 x
元。
返回所有可能的购买组合数。结果对 1e9 + 7
取模。
示例 1
输入:staple = [10,20,5], drinks = [5,5,2], x = 15
输出:6
解释:
符合条件的组合如下:
- 10 + 5 = 15(共 2 种)
- 10 + 2 = 12
- 5 + 5 = 10(共 2 种)
- 5 + 2 = 7
共计 6 种组合