最小数字游戏(Lc2974)——模拟+优先队列(小根堆)、排序+交换

你有一个下标从 0 开始、长度为 偶数 的整数数组 nums ,同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏,游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下:

  • 每一轮,Alice 先从 nums 中移除一个 最小 元素,然后 Bob 执行同样的操作。
  • 接着,Bob 会将移除的元素添加到数组 arr 中,然后 Alice 也执行同样的操作。
  • 游戏持续进行,直到 nums 变为空。

返回结果数组 arr 。

示例 1:

输入:nums = [5,4,2,3]
输出:[3,2,5,4]
解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 3 。然后 Bob 先将 3 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [3,2] 。
第二轮开始时,nums = [5,4] 。Alice 先移除 4 ,然后 Bob 移除 5 。接着他们都将元素添加到 arr 中,arr 变为 [3,2,5,4] 。

示例 2:

输入:nums = [2,5]
输出:[5,2]
解释:第一轮,Alice 先移除 2 ,然后 Bob 移除 5 。然后 Bob 先将 5 添加到 arr 中,接着 Alice 再将 2 添加到 arr 中。于是 arr = [5,2] 。

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100
  • nums.length % 2 == 0

问题简要描述:返回结果数组 

解法一

Java

class Solution {public int[] numberGame(int[] nums) {int[] ans = new int[nums.length];PriorityQueue<Integer> pq = new PriorityQueue<>();for (int num : nums) {pq.offer(num);}int i = 0;while (!pq.isEmpty()) {int p = pq.poll();ans[i++] = pq.poll();ans[i++] = p;}return ans;}
}

Python3

class Solution:def numberGame(self, nums: List[int]) -> List[int]:heapify(nums)ans = []while nums:a, b = heappop(nums), heappop(nums)ans.append(b)ans.append(a)return ans        

TypeScript

function numberGame(nums: number[]): number[] {let pq = new MinPriorityQueue();for (const x of nums) {pq.enqueue(x);}const ans: number[] = [];while (pq.size()) {const a = pq.dequeue().element;const b = pq.dequeue().element;ans.push(b, a);}return ans;    
};

C++

class Solution {
public:vector<int> numberGame(vector<int>& nums) {priority_queue<int, vector<int>, greater<int>> pq;for (int x : nums) {pq.push(x);}vector<int> ans;while (pq.size()) {int a = pq.top();pq.pop();int b = pq.top();pq.pop();ans.emplace_back(b);ans.emplace_back(a);}return ans;        }
};

解法二

Java

class Solution {public int[] numberGame(int[] nums) {Arrays.sort(nums);for (int i = 0; i < nums.length; i += 2) {int t = nums[i];nums[i] = nums[i + 1];nums[i + 1] = t;}return nums;}
}

 Python3

class Solution:def numberGame(self, nums: List[int]) -> List[int]:nums.sort()for i in range(0, len(nums), 2):nums[i], nums[i + 1] = nums[i + 1], nums[i]return nums

TypeScript

function numberGame(nums: number[]): number[] {nums.sort((a, b) => a - b);for (let i = 0; i < nums.length; i += 2) {[nums[i], nums[i + 1]] = [nums[i + 1], nums[i]];}return nums; 
};

C++

class Solution {
public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(), nums.end());for (int i = 0; i < nums.size(); i+=2){swap(nums[i], nums[i + 1]);}return nums;      }
};

Go

func numberGame(nums []int) []int {sort.Ints(nums)for i := 0; i < len(nums); i += 2 {nums[i], nums[i+1] = nums[i+1], nums[i]}return nums
}

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

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

相关文章

力扣 383赎金信

思路&#xff0c;用unordered_map存储magazine中字符以及字符出现的次数 遍历ransomNote中每个字符&#xff0c;如果能在map中找到&#xff0c;则对应value减一&#xff0c;如果字符对应的value小于零&#xff0c;意味着magazine中找不到与ransomNote里这个字符对应的字符&…

翁恺-C语言程序设计-05-3. 求a的连续和

05-3. 求a的连续和 输入两个整数a和n&#xff0c;a的范围是[0,9]&#xff0c;n的范围是[1,8]&#xff0c;求数列之和S aaaaaa…aaa…a&#xff08;n个a&#xff09;。如a为2、n为8时输出的是222222…22222222的和。 输入格式&#xff1a; 输入在一行中给出两个整数&#xf…

VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解决方法

错误信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…

实战演练-2021年电赛国一之三端口DC-DC变换器

文章目录 前言一、题目二、题目分析1、题目要求解析2、题目方案选定方案一(使用buck-boost电路&#xff0b;双向DC-DC电路&#xff08;前端&#xff09;)方案二(使用同步整流Boost升压电路&#xff0b;双向DC-DC电路&#xff08;前端&#xff09;)方案三(使用同步整流Boost升压…

实时聊天 Vue + Vuex + sockjs-client + stompjs进行websocket连接

实时聊天 知识点WebSocket介绍SockJSSTOMP 开发环境功能实现安装应用在vuex中创建vue中的引入、监听、实例化与收发、订阅消息引入组件实例化与订阅计算属性监听收到消息封装的发送消息的公共方法发送消息 完整的代码 知识点 WebSocket介绍 WebSocket 是一种在 Web 应用中实现…

二叉搜索树大冒险:寻找-插入-删除

OK&#xff0c;看我们题目就可知道啦&#xff0c;今天要分享学习的一种数据结构就是二叉搜索树。 内容题目也说了三个大概的&#xff0c;分别是寻找、插入、删除。 讲这个之前呢&#xff0c;那么就先讲讲这个二叉搜索树是何方神圣呢&#xff1f; 二叉搜索树&#xff1a; 又…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(五)-同时支持无人机和eMBB用户数据传输的用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

全网最详细单细胞保姆级分析教程(二) --- 多样本整合

上一节我们研究了如何对单样本进行分析,这节我们就着重来研究一下如何对多样本整合进行研究分析! 1. 导入相关包 library(Seurat) library(tidyverse) library(patchwork)2. 数据准备 # 导入单样本文件 dir c(~/Desktop/diversity intergration/scRNA_26-0_filtered_featur…

Linux上如何安装ffmpeg视频处理软件

在Linux上安装ffmpeg需要以下步骤&#xff1a; 更新系统 在开始安装之前&#xff0c;首先需要更新系统以获取最新的软件包列表和版本。在终端中执行以下命令&#xff1a; sudo apt update sudo apt upgrade安装依赖库 ffmpeg依赖于一些库和工具&#xff0c;需要先安装它们。在…

【香橙派 Orange pi AIpro】| 开发板深入使用体验

目录 一. &#x1f981; 写在前面二. &#x1f981; 愉快的安装流程2.1 安装前准备2.2 流程准备2.2.1 烧录镜像2.2.2 开机2.2.3 连网2.2.4 SSH远程连接开发板 2.3 体验 AI 应用样例 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 大家好&#xff0c;我是狮子呀&…

医疗级微型导轨:保障医疗行业手术安全!

微型直线导轨能成为一种专为医疗行业设备运用的高精度线性运动设备&#xff0c;在现代医疗领域&#xff0c;精准的位置控制和平稳的运动对于确保医疗设备的高效性能至关重要。那么&#xff0c;医疗行业对微型导轨有哪些要求呢&#xff1f; 1、精度&#xff1a;在手术过程中&…

C++客户端Qt开发——开发环境

一、QT开发环境 1.安装三个部分 ①C编译器&#xff08;gcc&#xff0c;cl.exe……) ②QT SDK SDK-->软件开发工具包 比如&#xff0c;windows版本QT SDK里已经内置了C的编译器&#xff08;内置编译器是mingw&#xff0c;windows版本的gcc/g&#xff09; ③QT的集成开发…

Python编程中用函数还是用复杂的表达式

要不要使用复杂表达式 Perl语言的原作者Larry Wall曾经说过&#xff0c;伟大的程序员都有三个优点&#xff1a;懒惰、暴躁和自负。乍一看这三个词语没有一个是褒义词&#xff0c;但在程序员的世界里&#xff0c;这三个词有不同的意义。首先&#xff0c;懒惰会促使程序员去写一…

智慧园区规划建设解决方案PPT(40页)

智慧园区规划建设解决方案摘要 1. 园区定义与发展历程 园区&#xff0c;亦称开发区&#xff0c;是在特定产业和区域政策指导下形成的区域。它们通过提供基础设施和生产空间&#xff0c;吸引投资&#xff0c;形成技术、资本密集区&#xff0c;推动经济发展。园区发展经历了四代…

Docker 部署 ShardingSphere-Proxy 数据库中间件

文章目录 Github官网文档ShardingSphere-Proxymysql-connector-java 驱动下载conf 配置global.yamldatabase-sharding.yamldatabase-readwrite-splitting.yamldockerdocker-compose.yml Apache ShardingSphere 是一款分布式的数据库生态系统&#xff0c; 可以将任意数据库转换为…

【qt】TCP客户端信息的接受和发送

当有信息时的槽函数关联 跟服务端收到信息一样,当可以读一行的时候,就从套接字读一行. 发送信息也是和服务端如出一辙,通过write(). 运行结果:

java EnumSet 介绍

EnumSet 是 Java Collections Framework 中专门为枚举类型设计的高效集合实现。与其他集合类相比,EnumSet 提供了许多优点,如高效性、类型安全和易用性。它只能包含单个枚举类型的值,并且在内部使用位向量实现,因而在空间和时间上都非常高效。 EnumSet 的特点 高效性:Enu…

Spring MVC 中的文件上传 和 文件下载

Spring MVC 中的文件上传 和 文件下载 文章目录 Spring MVC 中的文件上传 和 文件下载1. Spring MVC 中的文件上传2. Spring MVC 中的文件下载3. 总结&#xff1a;4. 最后&#xff1a; 1. Spring MVC 中的文件上传 文件上传是&#xff1a;浏览器端向服务器发送文件&#xff0c…

C 语言结构体

由于近期项目需求,需使用到大量的指针与结构体&#xff0c;为更好的完成项目&#xff0c;故对结构体与指针的内容进行回顾&#xff0c;同时撰写本博客&#xff0c;方便后续查阅。 本博客涉及的结构体知识有&#xff1a; 1.0&#xff1a;结构体的创建和使用 2.0: typedef 关…

解锁音乐密码,人工智能创作动人歌词

在音乐的神秘世界里&#xff0c;每一段旋律都像是一把等待开启的密码锁&#xff0c;隐藏着无尽的情感与故事。而如今&#xff0c;人工智能正以其独特的智慧和创造力&#xff0c;帮助我们解锁这些音乐密码&#xff0c;创作出动人的歌词。 “妙笔生词智能写歌词软件&#xff08;…