列表

详情


3074. 重新分装苹果

给你一个长度为 n 的数组 apple 和另一个长度为 m 的数组 capacity

一共有 n 个包裹,其中第 i 个包裹中装着 apple[i] 个苹果。同时,还有 m 个箱子,第 i 个箱子的容量为 capacity[i] 个苹果。

请你选择一些箱子来将这 n 个包裹中的苹果重新分装到箱子中,返回你需要选择的箱子的 最小 数量。

注意,同一个包裹中的苹果可以分装到不同的箱子中。

 

示例 1:

输入:apple = [1,3,2], capacity = [4,3,1,5,2]
输出:2
解释:使用容量为 4 和 5 的箱子。
总容量大于或等于苹果的总数,所以可以完成重新分装。

示例 2:

输入:apple = [5,5,5], capacity = [2,4,2,7]
输出:4
解释:需要使用所有箱子。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minimumBoxes(vector<int>& apple, vector<int>& capacity) { } };

php 解法, 执行用时: 8 ms, 内存消耗: 20.1 MB, 提交时间: 2024-03-13 15:56:05

class Solution {

    /**
     * @param Integer[] $apple
     * @param Integer[] $capacity
     * @return Integer
     */
    function minimumBoxes($apple, $capacity) {
        $s = array_sum($apple); // 计算苹果总数
        arsort($capacity); // 按降序对容量进行排序

        $i = 0;
        foreach ($capacity as $x) {
            $i++;
            $s -= $x;
            if ($s <= 0) { // 所有苹果都装入了箱子
                return $i;
            }
        }
    }
}

java 解法, 执行用时: 1 ms, 内存消耗: 41.3 MB, 提交时间: 2024-03-13 15:54:10

class Solution {
    public int minimumBoxes(int[] apple, int[] capacity) {
        int s = 0;
        for (int x : apple) {
            s += x;
        }
        Arrays.sort(capacity);
        int m = capacity.length;
        int i = m - 1;
        for (; s > 0; i--) {
            s -= capacity[i];
        }
        return m - 1 - i;
    }
}

golang 解法, 执行用时: 2 ms, 内存消耗: 2.3 MB, 提交时间: 2024-03-13 15:53:56

func minimumBoxes(apple, capacity []int) int {
	s := 0
	for _, x := range apple {
		s += x
	}
	slices.SortFunc(capacity, func(a, b int) int { return b - a })
	for i, c := range capacity {
		s -= c
		if s <= 0 { // 所有苹果都装入了箱子
			return i + 1 // 0 到 i 有 i+1 个箱子
		}
	}
	return -1
}

python3 解法, 执行用时: 43 ms, 内存消耗: 16.4 MB, 提交时间: 2024-03-13 15:53:42

class Solution:
    def minimumBoxes(self, apple: List[int], capacity: List[int]) -> int:
        s = sum(apple)
        capacity.sort(reverse=True)
        for i, x in enumerate(capacity, 1):
            s -= x
            if s <= 0:  # 所有苹果都装入了箱子
                return i

上一题