【华为OD题库-108】水果摊小买卖-java

题目

小王手里有点闲钱,想着做点卖水果的小买卖。给出两个数组m、n,用m[i]代表第i个水果的成本价,n[i]代表第i水果能卖出的价钱,假如现在有本钱k,试问最后最多能赚多少钱?
说明:
1 每种水果只需买一次,只能卖—次
2 数组m、n大小不超过50
3 数组元素为正整数,不超过1000
输入描述:
1 数组m、n
2 本钱k
备注:
1 首行输入逗号分隔的数组m的元素值
2 第二行输入逗号分隔的数组n的元素值
3 第三行输入本钱
输出描述:
最多能赚取多少钱。
示例1
输入
4,2,6,4
5,3,8,7
15
输出
22

思路

这道题歧义太大了,只有结合示例数据再反向推导题意

  1. 根据题意理解:

按照题目原本的描述,每种水果只能买一次、卖一次,那一次可以买多个吧?以示例数据为例,明显第4种水果利润更高,购买方案可以是:
买3个第四类水果,花了12元,还剩3元;卖出后可以赚3*(7-4)=9元,卖出后拥有24元钱
再买12个第二类水果,卖出后可以赚12*(3-2)=12元,卖出后拥有36元钱
再买6个第三类水果,卖出后可以赚6*(8-6)=12元,卖出后拥有48元钱
最后买12个第一类水果,卖出后可以赚12元,卖出后拥有60元钱
所以最多能赚的前为:60-15=45。
这种理解最贴合原来的题意,但是明显和示例1数据不合。

  1. 根据示例数据反推

拥有15元,先买第一类水果(将题目限定为只能买一个水果)后卖出,赚1块,得到16块
再买第二类水果后卖出,赚1块,得到17块
再买第三类水果后卖出,赚2块,得到19块
最后买第四类水果后卖出,赚3块,得到22块
所以最后输出了22(完全不考虑原来15元的成本啊
按照这这种理解,把每个能赚到的钱都赚到就能得到最高的利润。不能赚的钱是:当前拥有的钱买不起成本价,即不能进货。所以应该优先买成本低利润大的水果,卖出后会使当前的钱增多,下轮进货时就可能买得起当初进不了的货了。

题解

package hwod;import java.util.*;public class BuyFruit {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int[] m = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();int[] n = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();int k = sc.nextInt();System.out.println(buyFruit(m, n, k));}private static int buyFruit(int[] m, int[] n, int k) {//第一个数代表成本价,第二个数代表售价List<int[]> list = new ArrayList<>();for (int i = 0; i < m.length; i++) {if (n[i] > m[i]) {//只存有利润的水果list.add(new int[]{m[i], n[i]});}}list.sort((o1, o2) -> {if(o1[0]!=o2[0]) return o1[0] - o2[0];return o2[1] - o1[1];});for (int i = 0; i < list.size(); i++) {if (k >= list.get(i)[0]) {k += list.get(i)[1] - list.get(i)[0];}}return k;}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

说明

本专栏所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

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

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

相关文章

【备忘】fastadmin穿透传参and默认选中下拉框的值

当你想从控制器向视图对应的js文件传参&#xff0c;你就需要用到这个能力了。 使用场景 我需要在新增对应的add.js中默认设置下拉框值的时候&#xff0c;就需要在add.js绑定事件之前把想要的数据从控制器中带出来。 控制器代码 //穿透传参 资金文件id$this->assignconfig…

总结心得:各设计模式使用场景

单例模式&#xff1a;创建单个对象 工厂模式&#xff1a;创建对象交给工厂完成&#xff0c;当需要创建的对象是一系列相互关联或相互依赖的产品族时 原型模式&#xff1a;克隆对象&#xff0c;避免创建初始化开销 建造者模式&#xff1a;创建一个复杂对象&#xff0c;该对象…

Java关键字(1)

Java中的关键字是指被编程语言保留用于特定用途的单词。这些关键字不能用作变量名或标识符。以下是Java中的一些关键字&#xff1a; public&#xff1a;表示公共的&#xff0c;可以被任何类访问。 private&#xff1a;表示私有的&#xff0c;只能被定义该关键字的类访问。 cl…

超详细YOLOv8姿态检测全程概述:环境、训练、验证与预测详解

目录 yolov8导航 YOLOv8&#xff08;附带各种任务详细说明链接&#xff09; 搭建环境说明 不同版本模型性能对比 不同版本对比 参数解释 模型解释 训练 训练示意代码 训练数据与.yaml配置方法 .yaml配置 数据集路径 标签数据说明 训练参数说明 训练过程示意及输出…

系列六、Consul

一、Consul 1.1、概述 Consul是一套开源的分布式服务发现和配置管理系统&#xff0c;由HashiCorp公司用Go语言开发。他提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个功能都可以单独使用&#xff0c;也可以一起使用以构建全方位的服务网格&…

【Web】vulhub-httpd apache解析漏洞复现(1)

目录 ①CVE-2017-15715 ②apache_parsing_vulnerability ①CVE-2017-15715 贴出源码&#xff1a; <?php if(isset($_FILES[file])) {$name basename($_POST[name]);$ext pathinfo($name,PATHINFO_EXTENSION);if(in_array($ext, [php, php3, php4, php5, phtml, pht]))…

Oracle VirtualBox中Linux系统基本使用方法——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 小北的这篇博客介绍的是关于用VirtualBox中下载好的ubuntu系统中&#xff0c;为搭建Hadoop平台所做的命令操作准备&#xff0c;希望能帮助不会的人有指引作用。 没有安装好VirtualBox中的ubuntu系统以及创建Hadoop账户的请参考小北之前的三篇博客&#xff1a; ubuntu18…

申请虚拟VISA卡Fomepay教程

fomepay 用下面的注册链接直达 https://gpt.fomepay.com/#/pages/login/index?dS21BA1 或者扫描下面图片的二维码直达注册 注册后尽量随用随充值不建议放大量现金在里面。

Java基础02-Java编程基础

文章目录 变量&#xff08;Variables&#xff09;局部变量和成员变量局部变量&#xff08;Local Variables&#xff09;成员变量&#xff08;Instance Variables&#xff09; 标识符&#xff08;Identifiers&#xff09;八种基本数据类型原始数据类型&#xff08;Primitive Dat…

uniapp中组件库的丰富NumberBox 步进器的用法

目录 基本使用 #步长设置 #限制输入范围 #限制只能输入整数 #禁用 #固定小数位数 #异步变更 #自定义颜色和大小 #自定义 slot API #Props #Events #Slots 基本使用 通过v-model绑定value初始值&#xff0c;此值是双向绑定的&#xff0c;无需在回调中将返回的数值重…

副业踩坑之路(1)

写下这段经历让别人少踩坑吧&#xff0c;随便写的&#xff0c;不好轻喷哈&#xff0c;努力听取广大网友的建议~ 起因 几个月前&#xff0c;我妈妈手机套餐是移动39元的&#xff0c;流量好像才5G。家里开的小店铺里面没有WIFI&#xff0c;生意需要&#xff0c;经常要逛淘宝拼多…

C++知识点总结(11):质因子分解

一、质数和合数 质数 如果一个数除了 1 1 1 和本身&#xff0c;没有其他的因数&#xff0c;就是质数。 合数 如果一个数除了 1 1 1 和本身&#xff0c;还有其他的因数&#xff0c;就是合数。 小贴士 1 1 1 是一个例外&#xff0c;既不是质数&#xff0c;也不是合数。 二、求…

linux安装python

文章目录 前言一、下载安装包二、安装1.安装依赖2.解压3.安装4.软链接5.验证 总结 前言 本篇文章介绍linux环境下安装python。 一、下载安装包 下载地址&#xff1a;官方网站 我们以最新的标准版为例 二、安装 1.安装依赖 yum -y install openssl-devel ncurses-devel li…

3.pytorch cifar10

数据集 CIFAR10 是由 Hinton 的学生 Alex Krizhevsky、Ilya Sutskever 收集的一个用于普适物体识别的计算机视觉数据集&#xff0c;它包含 60000 张 32 X 32 的 RGB 彩色图片&#xff0c;总共 10 个分类。 这些类别分别是飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车。其…

服务号和订阅号哪个好

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;在推送频率上来看&#xff0c;服务号每月能推送四条消息&#xff0c;而订阅号可以每天&#xff08;24小时&#xff09;推送一条消息。如果企业开通公众号的目的是提供服务&#xff0c;例如售前资讯…

动态规划 | 鸡蛋问题 | 元旦假期来点“蛋”题

文章目录 鸡蛋掉落 - 两枚鸡蛋题目描述动态规划解法问题分析程序代码 鸡蛋掉落题目描述问题分析程序代码复杂度分析 鸡蛋掉落 - 两枚鸡蛋 题目描述 原题链接 给你 2 枚相同 的鸡蛋&#xff0c;和一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f &#xff0c;满足 …

我的学习C#回炉学习日志——Lua热更新06_模块

模块 个人理解&#xff1a;lua的包比起C#&#xff0c;基本上就是一个table记录所有信息&#xff0c;包括变量、常量等 module {} module.constant "一个常量" function module.func1()io.write("一个共有函数\n") endlocal function func2()-- bodypr…

C语言注释的使用与理解

什么是注释&#xff1f; 在编程中&#xff0c;注释&#xff08;Comment&#xff09;是一种非执行文本&#xff0c;它用于为代码提供解释、说明和文档。注释的内容不参与程序的实际编译和运行过程&#xff0c;其主要目的是提高代码的可读性和可维护性&#xff0c;方便开发者以及…

MySQL:排序和分组

1、排序 order by 用于对结果集按照一个列或者多个列进行排序。默认按照升序对记录进行排序&#xff0c;如果需要按照降序对记录进行排序&#xff0c;可以使用 desc 关键字。 order by 对多列排序的时候&#xff0c;先排序的列放前面&#xff0c;后排序的列放后面。并且&…

Python字典类型key找value或者value找key方法汇总

字典中&#xff0c;如何通过唯一的value获取key 如果传入的值在字典的值中不存在&#xff0c;可以返回一个特定的默认值或者抛出一个异常来表示该情况。以下是两种处理方式的示例&#xff1a; 返回默认值&#xff1a; def get_key_by_value(dictionary, value, defaultNone)…