阿里巴巴找黄金宝箱(II) - 贪心思维

news/2024/9/24 5:00:03/

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、题目描述
  • 二、输出描述
  • 三、输入描述
  • 四、java代码
  • 五、测试用例


前言

本人最近再练习算法,所以会发布自己的解题思路,希望大家多指教

一、题目描述

一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0-N的箱子,每个箱子上面贴有箱子中藏有金币的数量。

从金币数量中选出一个数字集合,并销毁贴有这些数字的每个箱子,如果能销毁一半及以上的箱子,则返回这个数字集合的最小大小。

二、输出描述

一个数字字串,数字之间使用逗号分隔,例如: 6,6,6,6,3,3,3,1,1,5字串中数字的个数为偶数,并且

1 <= 字串中数字的个数 <= 100000

1 <= 每个数字 <= 100000

三、输入描述

这个数字集合的最小大小,例如: 2

java_25">四、java代码

java">	public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] array = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();Map<Integer, Integer> map = new HashMap<>();//存放每个数字,及对应出现的次数for (int i = 0; i < array.length; i++) {map.put(array[i], map.getOrDefault(array[i], 0) + 1);}//根据出现次数倒序排序map = map.entrySet().stream().sorted(Map.Entry.comparingByValue((o1, o2) -> o2 - o1)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (o1,o2)->o1, LinkedHashMap::new));//获取箱子数量的一半int mul = array.length / 2;//初始化箱子数量和int sum = 0;//初始化数字最小数量int num = 0;for (Map.Entry<Integer, Integer> entry : map.entrySet()) {num++;sum += entry.getValue();//箱子数量超过一半,则直接输出最小数字集合大小if (sum >= mul) {System.out.println(num);return;}}}

五、测试用例

输入:
1,2,3,4,5,5,5,4,4,3
输出:
在这里插入图片描述


http://www.ppmy.cn/news/1461253.html

相关文章

【JavaScript】内置对象 - 数组对象 ① ( 数组简介 | 数组创建 | 数组类型检测 )

文章目录 一、数组对象1、数组简介2、数组创建3、数组检测 - Array.isArray() 方法4、数组检测 - instanceof 运算符 Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、数组对象 1、数组简介 在 JavaScr…

存储和NFS共享

存储类型 存储类型分为三种 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS网络附加存储&#xff1a;Network-Attached Storage&#xff0c;简称NAS存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN DAS:存储和主机是直连的&#xff0…

vue+sortablejs来实现列表拖拽——sortablejs的使用

sortablejs官网:https://sortablejs.com/ 最近在看form-builder组件&#xff0c;发现里面有用到sortablejs插件&#xff0c;用于实现拖拽效果。 但是这个官网中的配置&#xff0c;实在是看不懂&#xff0c;太简单又太复杂&#xff0c;不实用。 下面记录一下我的使用&#xff…

C++——超简单登录项目

程序入口文件 #include <QtWidgets/QApplication> // 包含登录页面头文件 #include "DlgLogin.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);// 程序入口// 调页面起来//DlgMain w;//w.show();// 换成登录页面DlgLogin w;w.show();return…

飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式

文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化&#xff0c;这步骤容易出问题&#xff01;安装flannel 结果展示 安装前准备 内核升级包的md5,本人已验证&#xff0c;只要是这个md5值&#xff0c;放心升级 1ea91ea41eedb35c…

泰迪科技2024中职大数据实训室方案解读

中职在大数据专业建设所遇到的困难 数据、信息安全、人工智能等新信息技术产业发展迅猛&#xff0c;人才极其匮乏&#xff0c;各个中职院校纷纷开设相应的专业方向。但是&#xff0c;绝大多数院校因为师资和积累问题&#xff0c;在专业建设规划、办学特色提炼、创新教学模…

微信加粉计数器

1.采用非注入式开发&#xff0c;支持无限多开 2.每个账号都有独立的分组&#xff0c;实时远程网页数据分享 3.后台功能强大&#xff0c;操作简单&#xff0c;自动去重复&#xff0c;准确计数分秒不差

工厂策略模式

工厂模式用于干掉大量的if-else &#xff0c;策略模式用于挪去臃肿的业务代码&#xff0c;还可以进一步升级加上模板模式&#xff0c;以及抽取成Starter public interface HandlerStrategy extends InitializingBean {void findSyncOrders(); }public class SalesPlatformFact…