• 每日一题:【LeetCode】1710. 卡车上的最大单元数


    目录

    题目

    请你将一些箱子装在一辆卡车上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi,numberOfUnitsPerBoxi] :

    numberOfBoxesi 是类型 i 的箱子的数量。 numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。
    整数 truckSize 表示卡车上可以装载箱子的最大数量 。只要箱子数量不超过 truckSize,你就可以选择任意箱子装到卡车上。

    返回卡车可以装载单元的最大总数。

    示例 1:
    输入:boxTypes = [[1,3],[2,2],[3,1]], truckSize = 4
    输出:8
    解释:箱子的情况如下:

    • 1 个第一类的箱子,里面含 3 个单元。
    • 2 个第二类的箱子,每个里面含 2 个单元。
    • 3 个第三类的箱子,每个里面含 1 个单元。
      可以选择第一类和第二类的所有箱子,以及第三类的一个箱子。
      单元总数 = (1 * 3) + (2 * 2) + (1 * 1) = 8

    示例 2:
    输入:boxTypes = [[5,10],[2,5],[4,7],[3,9]], truckSize = 10
    输出:91

    提示:

    1 <= boxTypes.length <= 1000
    1 <= numberOfBoxesi, numberOfUnitsPerBoxi <= 1000
    1 <= truckSize <= 106

    来源:力扣(LeetCode
    链接:https://leetcode.cn/problems/maximum-units-on-a-truck
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题解

    要求卡车可以装载单元的最大总数,很容易想到先装单元数量大的箱子,不够再装单元数量小一点的箱子,直至箱子数量达到truckSize
    于是要做的就是对boxTypes数组进行排序,按照numberOfUnitsPerBoxi进行降序排列

    class Solution:
        def maximumUnits(self, boxTypes: List[List[int]], truckSize: int) -> int:
            boxTypes.sort(key=lambda x: x[1],reverse=True)
            sum=0
            for i in boxTypes:
                if truckSize>=i[0]:
                    truckSize-=i[0]
                    sum+=i[1]*i[0]
                else:
                    sum+=i[1]*truckSize
                    break
            return sum
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    第十九章绘图
    四、基本组件
    LVS+keepalive高可用集群
    聚苯硫醚离子液体|苯硼酸离子液体|聚缩醛离子液体|透明质酸离子液体
    js---构造函数
    mfc对话框添加OnMouseMove
    Python3《机器学习实战》学习笔记(四):朴素贝叶斯实战篇之新浪新闻分类
    货币银行学简答论述题
    BM(Boyer-Moore) 算法详解
    SpringSecurity系列一:04 SpringSecurity 的默认用户是如何生成的?
  • 原文地址:https://blog.csdn.net/Chen_beichen/article/details/127874459