数学之鸡兔同笼问题

36 篇文章 0 订阅
1 篇文章 0 订阅

今天的每日一题写的很low,居然没想到鸡兔同笼,还傻傻的模拟!

1276. 不浪费原料的汉堡制作方案

()我的愚蠢写法:(超时)

class Solution {
    public List<Integer> numOfBurgers(int tomatoSlices, int cheeseSlices) {
        List<Integer> ans = new ArrayList<>();
        int tomatoMaxv = tomatoSlices / 4;
        for (int i = tomatoMaxv; i >= 0; i--) {
            if (i * 4 > tomatoSlices) continue;
            int humTomatoNum = i * 4;
            int humCheeseNum = i;
            int queenTomatoNum = tomatoSlices - humTomatoNum;
            int queenCheeseNum = cheeseSlices - humCheeseNum;
            if (humTomatoNum % 4 == 0 && queenTomatoNum % 2 == 0 && queenTomatoNum / 2 == queenCheeseNum) {
                ans.add(humTomatoNum / 4);
                ans.add(queenTomatoNum / 2);
            }
        }
        return ans;
    }
}

 

鸡兔同笼,公式优化:

假设番茄堡x个,小皇堡y个,可以得出x,y的结果,用题目给的代替,再判断x,y是否符合题目要求,最后返回值 

class Solution {
    public List<Integer> numOfBurgers(int tomatoSlices, int cheeseSlices) {
        List<Integer> ans = new ArrayList<>();
        int x, y;//巨无霸汉堡x,小皇堡y
        x = tomatoSlices / 2 - cheeseSlices;
        y = 2 * cheeseSlices - tomatoSlices / 2;
        if (4 * x + 2 * y == tomatoSlices && x + y == cheeseSlices && x >= 0 && y >= 0) {
            ans.add(x);
            ans.add(y);
            return ans;
        }
        return ans;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Adellle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值