当前位置: 首页 > news >正文

【华为OD题库-062】计算礼品发放的最小分组数目-java

题目

又到了一年的末尾,项目组让小明负责新年晚会的小礼品发放工作。为使得参加晚会的同时所获得的小礼品价值相对平衡,需要把小礼品根据价格进行分组,但每组最多只能包括两件小礼品,并且每个分组的价格总和不能超过一个价格上限。为了保证发放小礼品的效率,小明需要找到分组数目最少的方案。
你的任务是写一个程序,找出分组数最少的分组方案,并输出最少的分组数目。
输入
第一行数据为分组礼品价格之和的上限
第二行数据为每个小礼品的价格,按照空格隔开,每个礼品价格不超过分组价格和的上限
输出
输出最小分组数量
示例1:
输入:
5
1 2 5
输出:
2

思路

最多只能分两个礼品,要求最小方案数。先将输入nums按从小到大排序,以数据为例:1 2 3 3 5 8(假设不超过8),让left指向第一个礼物1,right指向最后一个礼物8
计算当前礼物价值:8+1=9,超过限制,8只能单独分一组,right- -,res=1
left=1,right=5,和为6,可以分为一组,left++,right- -,res=2
left=2,right=3,可以分为一组,left++,right- -,res=3
left=3,right=3,指向的同一个值,单独分一组即可,res=4
上述过程可以用队列或者双指针模拟实现。

题解

package hwod;import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;public class GiftGroup {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int max = sc.nextInt();sc.nextLine();int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();System.out.println(giftGroup(nums, max));System.out.println(giftGroup2(nums, max));}private static int giftGroup(int[] nums, int max) {Arrays.sort(nums);LinkedList<Integer> queue = new LinkedList<>();for (int num : nums) {queue.addLast(num);}int res = 0;while (queue.size() > 1) {int cur = queue.peekLast() + queue.peekFirst();queue.removeLast();if (cur <= max) {queue.removeFirst();}res++;}return queue.isEmpty() ? res : res + 1;}private static int giftGroup2(int[] nums, int max) {Arrays.sort(nums);int left = 0, right = nums.length - 1, res = 0;while (left < right) {int cur = nums[right] + nums[left];right--;res++;if (cur <= max) {left++;}}return left==right?res+1:res;}
}

推荐

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

相关文章:

【华为OD题库-062】计算礼品发放的最小分组数目-java

题目 又到了一年的末尾&#xff0c;项目组让小明负责新年晚会的小礼品发放工作。为使得参加晚会的同时所获得的小礼品价值相对平衡&#xff0c;需要把小礼品根据价格进行分组&#xff0c;但每组最多只能包括两件小礼品&#xff0c;并且每个分组的价格总和不能超过一个价格上限。…...

[go 面试] 构建高效微服务通信:选择合适的通信方式

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等&#xff0c;您的关注将是我的更新动力&#xff01; 构建分布式系统或微服务架构时&#xff0c;服务间通信成为至关重要的一环。不同的通信方式各有优劣&#xff0c;因此在选择时需根…...

【华为OD题库-048】拔河比赛-java

题目 公司最近准备进行拔河比赛&#xff0c;需要在全部员工中进行挑选。选拔的规则如下: 1.按照身高优先、体重次优先的方式准备比赛阵容 2.规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序。 输入为一个数组&#xff0c;记录了部门人员的身高、体重信息&#xff0c;如…...

【WebSocket】通信协议基于 node 的简单实践和心跳机制和断线重连的实现

前后端 WebSocket 连接 阮一峰大佬 WebSocket 技术博客 H5 中提供的 WebSocket 协议是基于 TCP 的全双工传输协议。它属于应用层协议&#xff0c;并复用 HTTP 的握手通道。它只需要一次握手就可以创建持久性的连接。 那么什么是全双工呢&#xff1f; 全双工是计算机网络中的…...

【有ISSN、ISBN号!往届均已完成EI检索】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)

第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;EIBDCT 2024&#xff09; 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;…...

【Windows】使用SeaFile搭建本地私有云盘并结合内网穿透实现远程访问

1. 前言 现在我们身边的只能设备越来越多&#xff0c;各种智能手机、平板、智能手表和数码相机充斥身边&#xff0c;需要存储的数据也越来越大&#xff0c;一张手机拍摄的照片都可能有十多M&#xff0c;电影和视频更是按G计算。而智能设备的存储空间也用的捉襟见肘。能存储大量…...

Windows本地搭建WebDAV服务并使用内网穿透远程访问【无公网IP】

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…...

责任链设计模式

package com.jmj.pattern.responsibility;/*** 请假条类*/ public class LeaveRequest {//姓名private String name;//请假天数private int num;//请假内容private String content;public LeaveRequest(String name, int num, String content) {this.name name;this.num num;…...

12.4 C++ 作业

完成沙发床的多继承 #include <iostream>using namespace std;//封装 沙发 类 class Sofa { private:string *sitting; public://无参构造函数Sofa(){cout << "Sofa::无参构造函数" << endl;}//有参构造函数Sofa(string s):sitting(new string(s)…...

基于ssm品牌会员在线商城源码

基于ssm品牌会员在线商城源码708 idea mysql数据库 navcat 开发技术&#xff1a;后端 ssm 后台管理 vue 用户端 vue.jshtml 演示视频&#xff1a; 基于ssm品牌会员在线商城源码 DROP TABLE IF EXISTS address; /*!40101 SET saved_cs_client character_set_client */; /…...

骨传导耳机音量大了有害吗?骨传导能保护听力吗?

无论是传统耳机还是骨传导耳机&#xff0c;只要使用音量过大&#xff0c;都会对有一定的损伤&#xff0c;然而由于骨传导耳机的传声原理和佩戴方式比较特殊&#xff0c;所以对人体的损伤比较小&#xff0c;想要知道骨传导耳机能否保护听力&#xff0c;就要先了解骨传导耳机的传…...

百望云供应链协同解决方案入选北大创新评论产业研究案例库

11月28日-29日&#xff0c;百望云受邀出席《北大创新评论》2023 Inno China 中国产业创新大会&#xff0c;从战略构建、生态塑造、科技创新等议题出发&#xff0c;与学术专家、产业专家、企业代表共赴盛会&#xff0c;思享汇聚。会上&#xff0c;《北大创新评论产业研究案例库&…...

selenium中元素定位正确但是操作失败,6种解决办法全搞定

selenium中元素定位正确但是操作失败的原因无外乎以下4种&#xff1a; 01 页面没加载好 解决方法&#xff1a;添加等待方法&#xff0c;如&#xff1a;time.sleep() 02 页面提交需要等待给数据后台 解决方法&#xff1a;添加等待方法&#xff0c;如&#xff1a;time.sleep(…...

触控板绘画工具Inklet mac功能介绍

Inklet mac是一款触控板绘画工具&#xff0c;把你的触控板变成画画的板子&#xff0c;意思是&#xff0c;你点在触控板的哪里&#xff0c;鼠标就会出现载相应的地方。例如&#xff0c;但你把手指移动到触控盘左下角&#xff0c;那么鼠标也会出现在左下角&#xff0c;对于用户而…...

〔005〕虚幻 UE5 像素流多用户部署

✨ 目录 ▷ 为什么要部署多用户▷ 开启分发服务器▷ 配置启动多个信令服务器▷ 配置启动客户端▷ 多用户启动整体流程和预览▷ 注意事项 ▷ 为什么要部署多用户 之前的像素流部署&#xff0c;属于单用户&#xff0c;是有很大的弊端的打开多个窗口访问&#xff0c;可以看到当一…...

11. 哈希冲突

上一节提到&#xff0c;通常情况下哈希函数的输入空间远大于输出空间&#xff0c;因此理论上哈希冲突是不可避免的。比如&#xff0c;输入空间为全体整数&#xff0c;输出空间为数组容量大小&#xff0c;则必然有多个整数映射至同一桶索引。 哈希冲突会导致查询结果错误&#…...

12.04 二叉树中等题

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路&#xff1a;找到最低层中最左侧的节点值&#xff0c;比较适合层序遍历&#xff0c;返回最…...

Redis的安装

本文采用原生的方式安装Redis&#xff0c;Redis的版本为5.0.5 安装 下载 下载网站&#xff1a;https://download.redis.io/releases/ wget http://download.redis.io/releases/redis-5.0.5.tar.gz解压 tar -zxvf redis-5.0.5.tar.gz进入redis目录 cd redis-5.0.5执行编译…...

JDK安装太麻烦?一篇文章搞定

JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA工具。 JDK包含的基本组件包括&#xff1a; javac – 编译器&#xf…...

漫谈HBuilderX App-Jenkins热更新构建

漫谈Uniapp App热更新包-Jenkins CI/CD打包工具链的搭建 零、写在前面 HBuilderX是DCloud旗下的IDE产品&#xff0c;目前只提供了Windows和Mac版本使用。本项目组在开发阶段经常需要向测试环境提交热更新包&#xff0c;使用Jenkins进行CD是非常有必要的一步。尽管HBuilderX提…...

太流批了,发票合并神器

今天给大家推荐两款软件&#xff0c;一款是图片转PDF&#xff0c;一款是发票合并工具。有需要的小伙伴可以下载收藏。 第一款&#xff1a;png2pdf png2pdf是一款png图片转PDF的小工具&#xff0c;这类的工具之前也有推荐过&#xff0c;但是今天这款比较特殊。 只要把图片拖入软…...

新手也能看懂的SQL注入绕过实战:以BUUCTF的BabySQL靶场为例,手把手教你双写绕过

从零破解BabySQL&#xff1a;双写绕过的艺术与科学 当你第一次接触CTF比赛中的SQL注入题目时&#xff0c;那种既兴奋又困惑的感觉一定记忆犹新。面对BabySQL这样的靶场&#xff0c;新手常会遇到一个典型困境&#xff1a;明明知道应该用union select来获取数据&#xff0c;却发现…...

CompressO终极指南:免费开源视频图片压缩工具完整使用教程

CompressO终极指南&#xff1a;免费开源视频图片压缩工具完整使用教程 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compres…...

5分钟免费解锁iPhone激活锁:applera1n终极使用指南

5分钟免费解锁iPhone激活锁&#xff1a;applera1n终极使用指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否刚入手了一部二手iPhone&#xff0c;却发现自己被困在激活锁界面无法前进&#xf…...

MTCNN级联网络设计精讲:从P-Net到O-Net,看作者如何用‘奇数特征图’和‘重叠池化’提升召回率

MTCNN级联网络架构解密&#xff1a;奇数特征图与重叠池化的工程智慧 人脸检测领域的技术演进始终围绕着两个核心命题&#xff1a;如何在有限计算资源下实现实时检测&#xff0c;以及如何在小目标场景中保持高召回率。2016年问世的MTCNN&#xff08;Multi-task Cascaded Convol…...

别再死记硬背了!用这三个等效模型,轻松搞定二极管电路分析(附典型例题)

二极管电路分析的三大等效模型实战指南 在电子工程和嵌入式开发领域&#xff0c;二极管作为基础元件却常常成为初学者的"拦路虎"。面对复杂的二极管电路&#xff0c;很多人陷入死记硬背的困境——记住各种电路的输出结果&#xff0c;却无法理解背后的分析逻辑。这种学…...

别再只用tic/toc了!MATLAB性能调优,这5种计时方法你用对了吗?(附R2023b实测对比)

MATLAB性能调优&#xff1a;超越tic/toc的5种高精度计时方案实战指南 在数值计算和算法开发领域&#xff0c;0.1秒的误差可能导致完全不同的仿真结果。当我们处理大规模矩阵运算、复杂系统仿真或深度学习训练时&#xff0c;选择正确的计时工具就像外科医生选择手术刀——精度决…...

dcm2niix终极指南:免费高效的医学影像格式转换神器

dcm2niix终极指南&#xff1a;免费高效的医学影像格式转换神器 【免费下载链接】dcm2niix dcm2nii DICOM to NIfTI converter: compiled versions available from NITRC 项目地址: https://gitcode.com/gh_mirrors/dc/dcm2niix dcm2niix是一款功能强大的开源医学影像转换…...

英雄联盟Akari助手:5大核心功能提升你的游戏体验终极指南

英雄联盟Akari助手&#xff1a;5大核心功能提升你的游戏体验终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟对…...

B站缓存视频终极转换指南:3分钟将m4s文件无损转为通用MP4格式

B站缓存视频终极转换指南&#xff1a;3分钟将m4s文件无损转为通用MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的…...