2023.12.25力扣每日一题——不浪费原料的汉堡制作方案

2023.12.25

      • 题目来源
      • 我的题解
        • 方法一 数学

题目来源

力扣每日一题;题序:1276

我的题解

方法一 数学

首先判断番茄的数量是不是偶数,若不是则不可能使用完材料,因为两种汉堡的对于番茄的消耗都是偶数;然后假设全部做小皇堡或者全部做巨无霸汉堡,看是否还有剩余的奶酪或者番茄,若还剩材料则不可以使用完材料;
已经判断出可以使用完材料后,计算两种汉堡分别需要制作的数量。

  • 假设全部做小皇堡,因为做一个巨无霸汉堡的材料需要做2个小皇堡的材料,所以 全部做小皇堡的个数-奶酪片数=需要做巨无霸汉堡的数
  • 实际做小皇堡的个数=奶酪片数-做巨无霸汉堡的数

时间复杂度:O(1)
空间复杂度:O(1)

public List<Integer> numOfBurgers(int tomatoSlices, int cheeseSlices) {
    List<Integer> res=new ArrayList<>();
    // 若全部做小皇堡都还剩奶酪 或者 全部做巨无霸汉堡还剩番茄  或者  番茄的数量是奇数 
    // 上述三种情况都不可能使用完番茄和奶酪
    if(tomatoSlices/2<cheeseSlices||tomatoSlices/4>cheeseSlices||tomatoSlices%2!=0)
        return res;
    // 假设全部做小皇堡
    int bi=tomatoSlices/2;
    // 需要做巨无霸汉堡的数量,因为做一个巨无霸汉堡的材料需要做2个小皇堡的材料,所以 
    // 全部做小皇堡的个数-奶酪片数=需要做巨无霸汉堡的数
    int sub=bi-cheeseSlices;
    res.add(sub);
    // 实际做小皇堡的个数=奶酪片数-做巨无霸汉堡的数
    res.add(cheeseSlices-sub);
    return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈~

你可能感兴趣的:(力扣每日一题,java,leetcode,算法,职场和发展)