LeetCode 2974.最小数字游戏:排序+交换奇偶位

【LetMeFly】2974.最小数字游戏:排序+交换奇偶位

力扣题目链接:https://leetcode.cn/problems/minimum-number-game/

你有一个下标从 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

解题方法:排序

相当于是每次挑选两个最小的数,然后让第二小的数放到第一小的数的前面。

例如[1, 2, 3, 4]会变成[2, 1, 4, 3]

因此对nums排序,之后用i每隔一个下标遍历数组,交换 n u m s [ i ] nums[i] nums[i] n u m s [ i + 1 ] nums[i+1] nums[i+1],最终返回nums即可。

  • 时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn),其中 n = l e n ( n u m s ) n=len(nums) n=len(nums)
  • 空间复杂度 O ( log ⁡ n ) O(\log n) O(logn)

AC代码

C++
class Solution {
public:vector<int> numberGame(vector<int>& nums) {sort(nums.begin(), nums.end());for (int i = 0; i + 1 < nums.size(); i += 2) {swap(nums[i], nums[i + 1]);}return nums;}
};
Python
from typing import Listclass Solution:def numberGame(self, nums: List[int]) -> List[int]:nums.sort()for i in range(0, len(nums) - 1, 2):nums[i], nums[i + 1] = nums[i + 1], nums[i]return nums

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/140365205

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

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

相关文章

爬虫-浏览器自动化

什么是selenium selenium是浏览器自动化测试框架&#xff0c;原本用于网页测试。但到了爬虫领域&#xff0c;它又成为了爬虫的好帮手。有了 selenium&#xff0c;我们便不再需要判断网页数据加载的方式&#xff0c;只要让 selenium 自动控制浏览器&#xff0c;就像有双无形的手…

字体反爬之自动化通过字体文件生成映射字典

1、首先找到以.ttf结尾的字体文件,下载下来,以我的字体文件sfont.ttf为例 sont.ttf下载地址https://download.csdn.net/download/lingyingdon/89534953 目前只测试了.ttf文件。如果想使用woff字体文件,请自行测试 2、下载分割字体文件的软件fontforge, 安装后将安装路径添加…

【以史为镜、以史明志,知史爱党、知史爱国】中华上下五千年之-元朝

元朝是中国历史上第一个由蒙古族族建立的大统一封建王朝。完整的元王朝历史进程分为四个阶段&#xff1a; 元朝的历史让我们一笔带过&#xff0c;相信大家也不怎么喜欢看。同意的点赞&#xff01; 元朝的前身——蒙古汗国&#xff08;1206年—1271年&#xff09; 建立王朝统治—…

快速体验 Llama3 的 4 种方式,本地部署,800 tokens/s 的推理速度真的太快了!

北京时间4月19日凌晨&#xff0c;Meta在官网上官宣了Llama-3&#xff0c;作为继Llama1、Llama2和CodeLlama之后的第三代模型&#xff0c;Llama3在多个基准测试中实现了全面领先&#xff0c;性能优于业界同类最先进的模型&#xff0c;你有没有第一时间体验上呢&#xff0c;这篇文…

加入这些使用,代码变得简单即优雅!

加入这些使用&#xff0c;代码变得简单即优雅&#xff01;在Spring Boot应用中&#xff0c;拦截请求通常可以通过两种方式实现&#xff1a;使用HandlerInterceptor&#xff08;处https://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247484482&idx1&sn063cea7cda…

Apache AGE 运算符

运算符 字符串特定比较运算符 测试数据 SELECT * FROM cypher(graph_name, $$ CREATE (:Person {name: John}),(:Person {name: Jeff}),(:Person {name: Joan}),(:Person {name: Bill}) $$) AS (result agtype);Starts With 对字符串执行区分大小写的前缀搜索。 SELECT * …

String的常用方法

目录 复习与回顾数组抽象类和接口的区别 StringString常量池String常用方法 复习与回顾 数组 数组&#xff08;array&#xff09;是一种数据结构 &#xff0c;用于存储同一类型元素的容器。 数组的特点&#xff1a; 不可变性&#xff1a;数组的长度是固定的&#xff0c;一旦…

【源码开源】C#桌面应用开发:串口调试助手

c#桌面应用开发 1、环境搭建和工程创建&#xff1a;参照番茄定时器项目 工程创建参照 2、界面布局设计 3、具体功能函数 &#xff08;1&#xff09;端口扫描&#xff1a; private void btn_com_scan_Click(object sender, EventArgs e){//端口号扫描ReflashPortToComboBox(…

安装失败,已为系统安装 Microsoft Edge Webview2 Runtime

在使用微软的webview2的时候&#xff0c;有时候会出现如下错误提示&#xff1a; 解决方案&#xff1a; 1、打开电脑“控制面板”&#xff0c;找到Microsoft Edge Webview2 Runtime 2、鼠标右键点击&#xff0c;“更改”&#xff0c;按电脑指示操作执行。 3、再次安装Microsoft…

CV每日论文--2024.7.12

1、LLaVA-NeXT-Interleave: Tackling Multi-image, Video, and 3D in Large Multimodal Models 中文标题&#xff1a;LLaVA-NeXT-Interleave&#xff1a;处理大型多模态模型中的多图像、视频和 3D 简介&#xff1a;视觉指令调整在增强大型多模态模型(LMMs)的能力方面取得了显著…

事务码 BP DYNPRO_NOT_FOUND

事务码 BP DYNPRO_NOT_FOUND 使用事务 BP 时&#xff0c;模块 PBO_START_SUBSCREEN 中 SAPLBUSS 中的转储 DYNPRO_NOT_FOUND 目录 问题 双击查看详细信息时发生错误DYNPRO_NOT_FOUND 解决方案 执行事务码BUSP 重新生成屏幕 参考链接: 1621119

2w才学到的交易策略,Anzo Capital今天免费分享

花费了2w学费才学到的外汇交易策略&#xff0c;Anzo Capital今天免费分享&#xff01;那就是使用交易价格行动和利润区策略&#xff0c;在实施价格行动利润区策略时&#xff0c;关键步骤一定要严格执行&#xff0c;下面是操作的关键步骤&#xff1a; 1. 定义趋势&#xff1a;首…

获取网页logo图标

怎么获取网页logo图标的URL链接 第一种方法&#xff1a; 最常用的方法&#xff08;适用于90%的站点&#xff09;是&#xff0c;直接在访问网址首页链接后加上上/favicon.ico&#xff0c;例如&#xff1a; https://www.baidu.com/favicon.ico 第二种方法&#xff1a; 按F12&…

【逆向基础】十二、工具分享之Process Explorer

一、简介 Process Explorer是一款出色的进程资源管理器。在调试运行window系统中的程序软件时&#xff0c;使用Process Explorer可以通过工整的UI界面&#xff0c;让我们快速了解软件的进程信息&#xff0c;挂载的动态库等&#xff1b;可以帮助我们快速定位分析的方向&#xf…

2024.07.04校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | DJI 大疆 2025 “拓疆者” 秋季校园招聘正式开启&#xff08;内推&#xff09; 校招 | DJI 大疆 2025 “拓疆者” 秋季校园招聘正式开启&#xff08;内推&#xff09; 2、提前批…

python如何结束程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…

30.ROM-IP核的调用

&#xff08;1&#xff09;ROM IP核简介&#xff1a; ROM是只读存储器&#xff0c;是一种只能读出事先锁存的固态半导体存储器。其特性是一旦存储资料就无法再将之改变或删除&#xff0c;并且资料也不会因为电源关闭而消失。&#xff08;掉电不丢失&#xff09; FPGA使用内部RA…

上讯信息 InforCube运维管理审计系统 RepeatSend 前台RCE漏洞复现

0x01 产品简介 上讯信息的InforCube运维管理审计系统&#xff08;InforCube OMA&#xff09;是一款新一代运维安全审计产品&#xff0c;旨在全面提升企业IT运维管理水平&#xff0c;通过细粒度授权、全过程操作记录及控制、全方位操作审计等功能&#xff0c;实现运维过程的“事…

USB PD SINK协议取电芯片不同品牌介绍对比-在选择PD SINK 协议芯片时,用户需要综合考虑各方面的因素,包括工作耐压、稳定性、兼容性等

PD SINK协议芯片是现代通信技术中的一项重要技术&#xff0c;它起着连接不同系统的桥梁作用。协议芯片内部集成了各种不同的通信协议&#xff0c;如蓝牙、Wi-Fi、以太网等&#xff0c;使不同设备之间的通信变得更加简单和高效。协议芯片推动了信息通信技术的发展。在过去&#…

SpringBoot源码阅读(10)——后处理器

后处理器是在监听器EnvironmentPostProcessorApplicationListener中被加载。 入口在SpringApplication实例方法prepareEnvironment&#xff0c;第343行。 listeners.environmentPrepared(bootstrapContext, environment);这里触发了事件ApplicationEnvironmentPreparedEvent 相…