100233. 重新分装苹果

2024-03-10 17:52
文章标签 苹果 重新 分装 100233

本文主要是介绍100233. 重新分装苹果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

给你一个长度为 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
解释: 需要使用所有箱子。

提示:

  • 1 <= n == apple.length <= 50
  • 1 <= m == capacity.length <= 50
  • 1 <= apple[i], capacity[i] <= 50
  • 输入数据保证可以将包裹中的苹果重新分装到箱子中。

解题思路

这是一道比较简单的贪心策略的相关问题,我们应该优先使用大容量的箱子来装苹果。

  1. 首先,对 capacity 数组进行排序,确保盒子的容量从大到小排列。这样,我们可以优先使用容量最大的盒子。

  2. 使用 reduce 方法计算 apple 数组中所有苹果的总重量。reduce 方法的回调函数简单地将数组中的每个苹果重量累加起来,初始值为0。

  3. 初始化一个计数器 cnt,用来记录需要的盒子数量。

  4. 使用 while 循环来分配苹果到盒子中:

    • 只要苹果的总重量 sum 大于0,并且还有剩余的盒子(cnt 小于 capacity 数组的长度),就继续循环。
    • 在每次循环中,从 sum 中减去当前盒子的容量 capacity[cnt],然后 cnt 加1,表示已经使用了一个新的盒子。
  5. 如果在循环结束后,sum 仍然大于0,说明苹果的总重量超过了所有盒子的容量总和,因此返回 -1 表示无法装下所有的苹果。

  6. 如果 sum 不大于0,说明所有的苹果都已经被分配到了盒子中,返回 cnt 作为所需的最少盒子数量。

AC代码

/*** @param {number[]} apple* @param {number[]} capacity* @return {number}*/
var minimumBoxes = function (apple, capacity) {capacity.sort((a, b) => b - a);let sum = apple.reduce((a, b) => {return a + b;}, 0);let cnt = 0;while (sum > 0 && cnt < capacity.length) {sum -= capacity[cnt];cnt++;}if (sum > 0) return -1;return cnt;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

这篇关于100233. 重新分装苹果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795023

相关文章

html记账本改写:数据重新布局,更好用了,没有localStorage保存版本

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>htm记账本</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid bla

《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂》可以在苹果Mac电脑上玩吗?

在宏大的世界观游戏中,《黑暗之魂2:原罪学者》脱颖而出,以其探索性和挑战性征服了全球玩家的心灵。下面我们来看看《黑暗之魂2:原罪学者》是什么类型的游戏,《黑暗之魂2:原罪学者》可以在苹果电脑玩吗的相关内容。 一、《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂2:原罪学者》作为《黑暗之魂2》的增强版和重制版,是一款FromSoftware制作、BANDAI NAMCO和FromSoft

【C++题解】1272. 郭远摘苹果

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》 问题:1272. 郭远摘苹果 类型:二维数组 题目描述: 郭远有一天走到了一片苹果林,里面每颗树上都结有不同数目的苹果,郭远身上只能拿同一棵树上的苹果,他每到一棵果树前都会把自己身上的苹果扔掉并摘下他所在树上的苹果并带走(假设郭远会走过每一棵苹果树),问在郭远摘苹果的整个过程中,他身上携带的最多苹果数与最小苹果数的差是多少?

一个vue重新回顾,好多年前写的

在校期间简单跟着视频学习的代码,后面上传到github仓库就一直没有使用了,今天重新加载,重新启动。下面是启动时候遇到的问题,主要原因是我这部电脑是新电脑,很多环境还没有搭建。 成功启动后的页面效果 这里采用的思维是双向数据绑定,MVVM.附上一段目录结构。 APP.vue 下面展示一些 内联代码片。 <template><div id="app"><keep-alive exclude

硬刚苹果还得是华为

文|琥珀食酒社 作者 | 璇子 牛皮啊 华为发三折叠不意外 意外的是 这各种翻转简直颠覆想象 市面上没见过这么能“翻转”的? 要不怎么说硬刚苹果 还得看华为 就跟你同天怎么了? 拼创新、拼技术、拼热度 你就说哪比你差吧? iPhone 16做的改进 很多手机都能做,可能还早做了 但Mate XT三折叠 别人想做也做不了 不说引领时代啊 至少在折叠机领域又开

苹果账号登录后端验证两种方式 python2

import jsonimport jwt import requests import json import base64def decode_jwt(jwt_token):try:header,payload,sign = jwt_token.split('.')except:return {},{},""header = json.loads(base64.urlsafe_b6

在不损坏数据的情况下给WIN7重新划分分区

小易接到个求助电话:我的机器上已经装好了系统,但是只有一个分区。我不想重装系统重新分区,能不能再分出一个分区?   这个故障可能是困惑很多网友的一个故障。一般,有一些第三方的软件可以实现这些功能。但是,现在在 Windows Vista/Windows 7 里允许你对现有分区大小进行一定范围的调整。   来看一下操作办法:   准备工作   这个操作必须要求你的文件系统是 N

AI超周期现状 - NVIDIA、苹果以及人工智能的整体需求

于2024年6月6日在中国杭州拍摄的英伟达和苹果的标志。到6月5日,东部时间,英伟达的市值超过3万亿美元,正式超越苹果的市值,成为全球市值第二大的科技巨头。值得注意的是,短短3个多月时间里,英伟达的市值就从2万亿美元飙升至3万亿美元。(由Costfoto摄于NurPhoto,经盖蒂图片社批准) 在九月初经历了几天的市场动荡后,又有一波关于人工智能超级周期是否已结束的讨论。如果没有结束,那接下来会

是时候重新思考你的Google广告策略了吗?

以产品为中心、仅以关键词为焦点的广告活动是 谷歌广告中常见的一种活动类型。 如果你销售复古女式T恤,你可能会设置基于“复古女式T恤”关键词的独立关键词广告活动。 对于许多B2C零售商来说,这种方法效果不错。但是,对于其他一些商家来说,基于产品和关键词的广告活动并不一定是最好的策略。 比如说,我们接手了一个新的B2B客户的谷歌广告账户,其所有广告活动都是以产品为中心、仅关注关键词的广告活动。

虚拟机苹果系统MacOS中XCode的安装

1、背景介绍    主机系统Win11,虚拟机VMWare17,苹果系统MacOS 13.6.7 2、Xcode的在线    点击应用市场,输入Xcode搜索: 看来Xcode无法安装在macOS V13上,直接在线安装失败。 3、采用下载安装包的方法进行安装 解决办法参考链接: 低版本Mac OS安装合适xcode的方法_不能将xcode安装在“macintosh