LCP 18.早餐组合

​​题目来源:

leetcode题目,网址:LCP 18. 早餐组合 - 力扣(LeetCode)

解题思路:

按序遍历饮料数组,二分查找符合要求 staple 中满足要求的最大值所在位置。最后返回所有*(最大位置+1)之和即可。

解题代码:

复制代码
class Solution {
    public int breakfastNumber(int[] staple, int[] drinks, int x) {
        int res=0;
        Arrays.sort(staple);
        Arrays.sort(drinks);
        int pre=staple.length-1;
        for(int i=0;i<drinks.length;i++){
            int thisPos=getPos(staple,pre,x-drinks[i]);
            if(thisPos==-1){
                break;
            }else{
                res+=thisPos+1;
                res=res%1000000007;
                pre=thisPos;
            }
        }
        return res;
    }
    public int getPos(int[] arr,int right,int max){
        if(arr[right]<=max){
            return right;
        }else if(arr[0]>max){
            return -1;
        }
        int left=0;
        int mid=left+(right-left)/2;
        while(!(arr[mid]<=max && arr[mid+1]>max)){
            mid=left+(right-left)/2;
            if(arr[mid]>max){
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        return mid;

    }
}
复制代码

总结:

无官方题解。


相关推荐
月阳羊42 分钟前
【硬件-笔试面试题-76】硬件/电子工程师,笔试面试题(知识点:H桥驱动电路的设计要点)
java·单片机·嵌入式硬件·面试·职场和发展
赵星星5201 小时前
MySQL的默认隔离级别:为什么是可重复读(RR)而非读已提交(RC)?
java
用户2018792831671 小时前
故事:公司的 "私人储物柜" 系统(ThreadLocalMap)
android·java
ling__i1 小时前
java day18
java·开发语言
非ban必选1 小时前
netty-scoket.io路径配置
java·服务器·前端
渣哥2 小时前
我和Java 8 Stream相爱相杀的那些年
java
爱吃烤鸡翅的酸菜鱼2 小时前
【Spring】原理解析:Spring Boot 自动配置
java·spring boot
小白兔3532 小时前
一文讲通Unicode规范、UTF-8与UTF-16编码及在Java中的验证
java
十八旬2 小时前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
Java微观世界2 小时前
匿名内部类和 Lambda 表达式为何要求外部变量是 final 或等效 final?原理与解决方案
java·后端