首先判断番茄的数量是不是偶数,若不是则不可能使用完材料,因为两种汉堡的对于番茄的消耗都是偶数;然后假设全部做小皇堡或者全部做巨无霸汉堡,看是否还有剩余的奶酪或者番茄,若还剩材料则不可以使用完材料;
已经判断出可以使用完材料后,计算两种汉堡分别需要制作的数量。
- 假设全部做小皇堡,因为做一个巨无霸汉堡的材料需要做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;
}
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~