LeetCode //C - 1276. Number of Burgers with No Waste of Ingredients

1276. Number of Burgers with No Waste of Ingredients

Given two integers tomatoSlices and cheeseSlices. The ingredients of different burgers are as follows:

  • Jumbo Burger: 4 tomato slices and 1 cheese slice.
  • Small Burger: 2 Tomato slices and 1 cheese slice.

Return total_jumbo, total_small so that the number of remaining tomatoSlices equal to 0 and the number of remaining cheeseSlices equal to 0. If it is not possible to make the remaining tomatoSlices and cheeseSlices equal to 0 return \[\].

Example 1:

Input: tomatoSlices = 16, cheeseSlices = 7

Output: 1,6

Explanation: To make one jumbo burger and 6 small burgers we need 41 + 2 6 = 16 tomato and 1 + 6 = 7 cheese.

There will be no remaining ingredients.

Example 2:

Input: tomatoSlices = 17, cheeseSlices = 4

Output: \[\]

Explanation: There will be no way to use all ingredients to make small and jumbo burgers.

Example 3:

Input: tomatoSlices = 4, cheeseSlices = 17

Output: \[\]

Explanation: Making 1 jumbo burger there will be 16 cheese remaining and making 2 small burgers there will be 15 cheese remaining.

Constraints:
  • 0 < = t o m a t o S l i c e s , c h e e s e S l i c e s < = 10 7 0 <= tomatoSlices, cheeseSlices <= 10^7 0<=tomatoSlices,cheeseSlices<=107

From: LeetCode

Link: 1276. Number of Burgers with No Waste of Ingredients


Solution:

Ideas:

Set up two equations (4j + 2s = tomatoSlices and j + s = cheeseSlices), solve for the number of jumbo and small burgers, and return them only if both are non-negative integers; otherwise return an empty array.

Code:
c 复制代码
#include <stdlib.h>

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* numOfBurgers(int tomatoSlices, int cheeseSlices, int* returnSize) {
    *returnSize = 0;

    /* Tomato slices must be even. */
    if (tomatoSlices % 2 != 0) {
        return NULL;
    }

    int jumbo = tomatoSlices / 2 - cheeseSlices;
    int small = 2 * cheeseSlices - tomatoSlices / 2;

    /* Burger counts cannot be negative. */
    if (jumbo < 0 || small < 0) {
        return NULL;
    }

    int* result = (int*)malloc(2 * sizeof(int));

    if (result == NULL) {
        return NULL;
    }

    result[0] = jumbo;
    result[1] = small;
    *returnSize = 2;

    return result;
}
相关推荐
wuminyu1 小时前
JVM虚拟线程的底层实现原理分析
java·linux·c语言·jvm·c++
keyipatience1 小时前
跳表详细解析
开发语言·数据结构·c++·算法·跳表
想吃火锅10051 小时前
【leetcode】189.轮转数组js
开发语言·javascript·leetcode
大侠归来2 小时前
cJSON 源码解析:parse_string 函数深入剖析
linux·网络·算法
番茄灭世神2 小时前
PN学堂GD32教程第11篇——I2C与EEPROM
c语言·stm32·单片机·嵌入式·gd32
余额瞒着我当琳3 小时前
C++ map 底层与AVL 树
开发语言·c++·算法
释厄6233 小时前
物理发展史·量子力学=节点2·牛顿力学=节点3·宇宙的语言算法AI
人工智能·算法·microsoft
CQU_JIAKE3 小时前
9.30【A】
算法
阿钱真强道3 小时前
27 嵌入式操作系统 | C 网关:串口 ⇄ UDP 转发(先用 UDP 当上位机替身)
c语言·单片机·网关·udp·uloop