力扣题解(大礼包)

638. 大礼包

已解答

中等

相关标签

相关企业

在 LeetCode 商店中, 有 n 件在售的物品。每件物品都有对应的价格。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。

给你一个整数数组 price 表示物品价格,其中 price[i] 是第 i 件物品的价格。另有一个整数数组 needs 表示购物清单,其中 needs[i] 是需要购买第 i 件物品的数量。

还有一个数组 special 表示大礼包,special[i] 的长度为 n + 1 ,其中 special[i][j] 表示第 i 个大礼包中内含第 j 件物品的数量,且 special[i][n] (也就是数组中的最后一个整数)为第 i 个大礼包的价格。

返回 确切 满足购物清单所需花费的最低价格,你可以充分利用大礼包的优惠活动。你不能购买超出购物清单指定数量的物品,即使那样会降低整体价格。任意大礼包可无限次购买。

思路:

本题可以发现物品数目极少,最多只有6种,且每种物品需要的数量不超过10种,即所有可能是11的6次方,因此遍历所有情况不会超过10的7次方的范围,不会超时。

具体遍历方式:对于当前的需求curneed,先考虑全部用单买的方式得出一个价格,然后对所有礼包进行遍历,如果当前礼包买完以后,剩下需要的物品数目不会有负数,那么表示当前买这个礼包是合法的(因为本题要求精确的买每一个需要的物品,数量不能超过所需要的数量),那就用同样的方式,找到去掉这个礼包之后的需求的最大值money,用money加上礼包的价格,和当前需求的最小花费比较,得出更小的当前最小花费,最后返回题目要求的nee的的最小花费就是结果。

优化:本题中有些礼包可能会不划算,即买礼包比单买同样数目的物品所需要的价值还要高,那这个礼包一定是不需要的。另外有些礼包可能没有任何物品,或者礼包里的物品数目本来就超过了所需要的数目,那这些礼包一定是不用考虑的,可以直接舍弃。

另外可以用记忆化搜索的方式保存当前curneed的最小花费,减少重复运算的次数。

时间复杂度分析:

假设礼包是M个,物品是n个,每个物品需要的数目不超过N。

对于礼包优化,所需要的时间是n*m,对于函数,一共有最多N的n次方种情况,每种情况需要n的时间去遍历单买,M*n的时间去遍历礼包,因此极限情况下是M*n*N的n次方,空间复杂度是N的n次方存状态和递归,M存优化后的礼包,是N的n次方+M的空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GHuNeRF: Generalizable Human NeRF from a Monocular Video

研究背景 研究问题:这篇文章要解决的问题是学习一个从单目视频中泛化的人类NeRF模型。尽管现有的泛化人类NeRF已经取得了令人印象深刻的成果,但它们需要多视图图像或视频,这在某些情况下可能不可用。此外,一些基于单目视频的人类…

为啥学习数据结构和算法

基础知识就像是一座大楼的地基,它决定了我们的技术高度。而要想快速做出点事情,前提条件一定是基础能力过硬,“内功”要到位。 想要通关大厂面试,千万别让数据结构和算法拖了后腿 我们学任何知识都是为了“用”的,是为…

离线安装Vue2开发环境

在外网进行Vue2开发后,需要转到内网开发,无法在线依赖库安装,需要迁移node_modules。 1.内外网开发电脑安装同样版本的nodejs 我本地安装的node-v16.17.1-x64.msi,所以在内网环境也要按照node-v16.17.1-x64.msi。 在外网环境使用…

hadoop面试题

一、单项选择题 1、目前,Hadoop的最高版本是哪个( A ) A、Hadoop3.x B、Hadoop2.x C、Hadoop4.x D、Hadoop1.x 2、大数据的4V特征是指? ( B ) A、数据量大(Volume)、类型繁多(Variety)、价值密度低(Va…

初探Flink的序列化

Flink中的序列化应用场景 程序通常使用(至少)两种不同的数据表示形式[2]: 1. 在内存中,数据保存在对象、结构体、列表、数组、哈希表和树等结构中。 2. 将数据写入文件或通过网络发送时,必须将其序列化为字节序列。 从内存中的表示到字节序列…

运维人员常用的Linux命令汇总

运维人员常用的Linux命令汇总 一.文件和目录 cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。 cd /home 进入 / home 目录 cd .. 返回上一级目录 cd ../.. …

【ESP32】ESP-IDF开发 | I2C控制器+I2C主从收发例程

1. 简介 I2C(Inter-Integrated Circuit),是由Philips公司在1980年代初开发的一种半双工的同步串行总线,它利用一根时钟线和一根数据线在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的…

软考:案例题分析1101

22年第一题:架构设计与评估 分析文字,识别需求和质量属性?这里需要记忆质量属性有那些,区分需求和质量属性,能区分出质量属性之间的区别。 我的回答: 差距分析: 根据题目中功能的特点&#xff…

提高交换网络可靠性之端口安全配置

转载请注明出处 此实验为配置交换机端口安全,当非法设备接入接口时自动触发安全措施 1.查看PC1和PC2的MAC地址👇 2.交换机改名为S1,同时启用端口安全 3.配置允许接入设备 4.设置违规处理方式:即违规则关闭端口 5.查看安全端口相关…

nodejs入门教程19:nodejs dns模块

引入方式 在Node.js中,使用dns模块前需要先通过require函数引入它: const dns require(dns);核心方法 1. dns.lookup(hostname[, options], callback) 功能:将域名解析为IP地址。参数: hostname:要查询的主机名。…

UE5 第三人称学习之动画 control rig

这个东西和建模软件里有的是一个东西,然后IK就是你动脚,他帮你算出小腿大腿该怎么动,FK就是你自己动了大腿,摆小腿,然后再摆脚 就是给每一根骨骼搞一个控制器,给他一个容易选中和操作更明显的图形作为控制…

宏处理将多个excel文件的指定sheet页合并到一个excel文件中

背景了解:有个同事问我:现在他要处理一千多个文件,每个excel文件都有3个sheet页签,想把所有的excel文件的第二个sheet页签复制一份放到一个新的excel文件中。如果是手动去操作一个个文件的复制,也没什么不可&#xff0…

Linux系列-进程的概念

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 这篇文章,我们主要分析一下进程。 之前,我们讲过了冯诺依曼体系架构, 我们常见的计算机,像笔记本,或者不常见的计算机…

SQL优化经验大全(表设计优化,索引优化,索引创建规则、索引失效场景,sql语句优化,主从复制,分库分表)面试题

目录 1.表的设计优化 2.索引优化 2.1 索引创建的规则 2.2 索引失效的场景 3.SQL语句优化 4.主从复制、读写分离 5.分库分表 5.1.怎么判断项目是需要分库还是要分表? 5.2 分库分表有哪些拆分方案? 5.2.1 垂直分库 5.2.2 垂直分表 5.2.3 水平分…

【VMware】使用笔记

一、安装 win11支持16.2以上版本,其他版本不兼容 安装参考: 二、设置 1、蓝屏设置 参考:win11打开VMware虚拟机蓝屏解决_win11vmware蓝屏-CSDN博客 2、VMwareTool配置 第一步:移除“open-vm-tools” sudo apt-get autoremo…

css边框修饰

一、设置线条样式 通过 border-style 属性设置,可选择的一些属性如下: dotted:点线 dashed:虚线 solid:实线 double:双实线 效果如下: 二、设置边框线宽度 ① 通过 border-width 整体设置…

OpenGL入门002——顶点着色器和片段着色器

文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述: 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤,…

LeetCode 684.冗余连接:拓扑排序+哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n)))

【LetMeFly】684.冗余连接:拓扑排序哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n))) 力扣题目链接:https://leetcode.cn/problems/redundant-connection/ 树可以看成是一个连通且 无环 的 无向 图。 给定往…

C语言指针与一维数组 Java动态初始化与常见问题(越界问题)

1./*int main(void) { int a[5] { 10,20,30,40,50 };//数组间的元素地址相连的 int* p; printf("a代表的地址:%d\n", a);//数组首个元素的地址 printf("a1代表的地址:%d\n", a 1);//偏移数组 printf("a2…

2023年SEO趋势分析与未来发展展望

内容概要 在2023年的数字营销环境中,搜索引擎优化(SEO)依然扮演着关键角色。随着技术的不断演进和用户需求的变化,SEO趋势也在不断变化。首先,核心算法的更新已开始影响网站排名,搜索引擎越来越注重网站内…