码迷,mamicode.com
首页 > 编程语言 > 详细

早餐组合----java

时间:2021-04-02 13:04:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:int   bre   方案   ble   https   problems   计划   fas   组合   

小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。

注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/2vYnGI
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

首先我们可以使用双指针的形式,一个指向staple,一个指向drinks尾下标,并对数组进行排序,如果staple[i]和drinks[j]<x,那么说明j的drinks长度就是一组方案

class Solution {
    public int breakfastNumber(int[] staple, int[] drinks, int x) {
        Arrays.sort(staple);         //对数组进行有序排序
        Arrays.sort(drinks);
        int res=0;                  //从头开始当下标
        int j=drinks.length-1;      //从尾开始当下标,这样如果尾j符合,那么说明drinks.length的长度就是其中一组方案数
        for(int i=0;i<staple.length;i++) {
            if(j<0) break;          //排除特殊情况
            while(j>=0&&staple[i]+drinks[j]>x) {        //当大于0或者,两个数组的下标指向+起来大于x
                j--;
            } 
            res=(res+(j+1))%1000000007;                //小于的情况
        }
        return res%1000000007;
    }
}

程序运行过程:
staple[10,20,5]
drinks[5,5,2]
x=15

res=0
i=0;j=2,res=3
i=1;j=2,res=6
i=2;j=2;j=1;j=0;j=-1;res=6

早餐组合----java

标签:int   bre   方案   ble   https   problems   计划   fas   组合   

原文地址:https://www.cnblogs.com/xiaochaofang/p/14599617.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!