240717.LeetCode——2974.最小数字游戏

题目描述

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

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

EX1.

在这里插入图片描述

EX2.

在这里插入图片描述

提示

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

代码实现

C语言

暴力解法

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* numberGame(int* nums, int numsSize, int* returnSize)
{int i, j;//定义循环变量int t;//临时交换变量for (i = 0; i < numsSize - 1; i++){for (j = 0; j < numsSize - i - 1; j++){if (nums[j] > nums[j + 1]){t = nums[j];nums[j] = nums[j + 1];nums[j + 1] = t;}}}//进行冒泡排序:对原数组进行从小到大顺序排列for (i = 0; i < numsSize - 1; i = i + 2){t = nums[i];nums[i] = nums[i + 1];nums[i + 1] = t;}//从数组首元素开始进行两两交换*returnSize = numsSize;//注意要返回输出数组的大小return nums;//返回输出数组
}
执行结果

在这里插入图片描述

代码思路

根据题目要求,每次取出两个最小的,放入输出数组,但是顺序不规则。所以不妨将其拆分成两次。先进行规则排序再进行两两交换。所以第一个冒泡排序(很久没有用到,所以模板有些生疏),第二个循环,变量隔了一项进行。

暴力解法优化

/*** Note: The returned array must be malloced, assume caller calls free().*//*
自定义比较函数:用于比较两个元素。比较函数应当返回一个整数,表示比较结果:
小于零:表示第一个元素小于第二个元素。
等于零:表示两个元素相等。
大于零:表示第一个元素大于第二个元素。
*/
int compare(const void* a, const void* b)
{return (*(int*)a - *(int*)b);
}int* numberGame(int* nums, int numsSize, int* returnSize)
{int i, j;int t;qsort(nums, numsSize, sizeof(int), compare);//C库函数,<stdlib.h>中for (i = 0; i < numsSize - 1; i = i + 2){t = nums[i];nums[i] = nums[i + 1];nums[i + 1] = t;}*returnSize = numsSize;return nums;
}
执行结果

在这里插入图片描述

代码思路

对暴力解法进行优化,将冒泡函数进行封装,使用的是C库自带的函数,但需要自己定义一个比较函数,方法减少了空间复杂度。
其中

qsort()函数

声明
void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void *));
参数

  • base: 指向待排序数组的第一个元素的指针。
  • nitems: 数组中的元素数量。
  • size: 数组中每个元素的大小(以字节为单位)。
  • compare: 比较函数的指针,该函数用于比较两个元素。比较函数应当返回一个整数,表示比较结果。

总结

昨天又没空刷力扣,今天也是终于把江科大51单片机刷完了,也是正式开始学习数据结构与算法了,开始跟夏令营的课程,刷题,今天学的是算法入门和时空复杂度,也学了怎么用MarkDown写文档,现在这篇文档就是用MarkDown编辑器写的,刚好今天周三也是算法日,写到这里已经23.15了哈哈哈哈哈哈哈哈哈哈哈哈,然后的话,就这样吧,保持我的暑期规划不会被破坏,嘿嘿,加油。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JavaSE从零开始到精通

1.前置知识 JVM&#xff1a;java virtrual machine, java虚拟机, 专门用于执行java代码的一款软件。可以将class文件&#xff0c;转换为机器认识的机器码&#xff0c;因为我们的计算机只认识010101的二进制语言。JRE&#xff1a;java runtime enviroment, java运行时环境, jav…

关于Linux的面试题(实时更新中~)

一、软连接和硬连接的区别&#xff1a; 软连接创建方式 ln -s 被链接文件 链接文件 &#xff08;1&#xff09;软链接是一个链接文件&#xff1b; &#xff08;2&#xff09;软链接有着自己的 inode 号&#xff08;文件编号&#xff09;&#xff1b; &#xff08;3&#…

用adb指令把文件拷贝到Android模拟器

不解释太多&#xff0c;科学上网从youtube看了一个视频得来的 跳转到视频 首先必须要运行你要拷贝文件的目标Android模拟器&#xff0c;你关闭他的话&#xff0c;你是找不到这个设备的 管理员权限运行vs studio&#xff0c;在vs studio下打开Andriod的设备管理器 运行你要拷…

Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBase 正在 章节内容 上节我们完成了&#xff1a; HBase的由…

R语言实现神经网络ANN

# 常用激活函数 # 自定义Sigmoid函数 sigmod <- function(x){return(1/(1exp(-x))) } # 绘制Sigmoid曲线 x <- seq(-10,10,length.out 100) plot(x,sigmod(x),type l,col blue,lwd 2,xlab NA,ylab NA,main Sigmoid函数曲线)# 自定义Tanh函数 tanh <- function(…

OpenStack-Caracal 的horizon 组件的一个 bug

用 ROD 部署 openstack-caracal 的时候发现了一个故障&#xff1a; 通过查询 horizon 组件的 日志&#xff0c;发现这其实是一个产品 BUG &#xff0c;原因在于 Python 的 WEB服务框架 Django 不能正确传入 memcached 给出的一个属性参数、导致WEBROOT解析有问题&#xff1a; 这…

怎样减少视频的容量 怎样减少视频内存保持清晰度

在数字媒体时代&#xff0c;视频内容已经成为人们日常交流和信息传递的重要方式。然而&#xff0c;视频往往占用大量存储空间&#xff0c;给我们的设备带来不小的负担。如何在不损失视频质量的前提下&#xff0c;减少视频文件的大小呢&#xff1f;本文将为你揭秘几个实用的技巧…

Linux 下 ElasticSearch 集群部署

目录 1. ElasticSearch下载 2. 环境准备 3. ElasticSearch部署 3.1 修改系统配置 3.2 开放端口 3.3 安装 ElasticSearch 4. 验证 本文将以三台服务器为例&#xff0c;介绍在 linux 系统下ElasticSearch的部署方式。 1. ElasticSearch下载 下载地址&#xff1a;Past Rel…

vue使用audio 音频实现播放与关闭(可用于收到消息给提示音效)

这次项目中因为对接了即时通讯 IM&#xff0c;有个需求就是收到消息需要有个提示音效&#xff0c;所以这里就想到了用HTML5 提供的Audio 标签&#xff0c;用起来也是很方便&#xff0c;首先让产品给你个提示音效&#xff0c;然后你放在项目中&#xff0c;使用Audio 标签&#x…

在mybatis-plus中关于@insert注解自定义批处理sql导致其雪花算法失效而无法自动生成id的解决方法

受到这位作者的启发 > 原文在点这里 为了自己实现批量插入&#xff0c;我在mapper层使用insert注解写了一段自定义sql //自定义的批量插入方法 Insert("<script>" "insert into rpt_material_hour(id,sample_time,rounding_time,cur_month,machine_no…

【Powershell】超越限制:获取Azure AD登录日志

你是否正在寻找一种方法来追踪 Azure Active Directory&#xff08;Azure AD&#xff09;中用户的登录活动&#xff1f; 如果是的话&#xff0c;查看Azure AD用户登录日志最简单的方法是使用Microsoft Entra管理中心。打开 https://entra.microsoft.com/&#xff0c;然后进入 监…

idea Apipost 插件导出接口文档字段类型全部是string

idea版本&#xff1a;2023.2.1 Apipost-Helper-2.0插件版本&#xff1a; 联系官方客服后&#xff0c;更换插件版本&#xff0c;问题解决。更换后的插件版本为&#xff1a; 插件链接放在文章首部了&#xff0c;可直接下载&#xff0c;使用idea直接安装这个zip包&#xff0c;无需…

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型&#xff08;一&#xff09;】中介绍了 Stable Diffusion 可以被理解为重建分支&#xff08;reconstruction branch&#xff09;和条件分支&#xff08;condition branch&#xff09;【扩散模型&#xff08;二&#xff09;】IP-Adapter 从条件分支的视…

excel 图表切片器-操作教程

学习怎么用excel 图表切片器&#xff1a; 切片器提供按钮&#xff0c;你可以单击这些按钮来筛选 表或 数据透视表。 除了快速筛选外&#xff0c;切片器还指示当前筛选状态&#xff0c;以便轻松了解当前显示的确切内容。 具体 学习见 微软网站 操作步骤&#xff1a; 1.打开 E…

【BUG】已解决:java.lang.IllegalStateException: Duplicate key

已解决&#xff1a;java.lang.IllegalStateException: Duplicate key 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市…

MySQL1

新建产品库mydb6_product: mysql> create database mydb6_product; mysql> use mydb6_product; 建立employees表&#xff1a; mysql> create table employees(id int primary key, name varchar(50) not null, age int, gender varchar(10) not null default unknow…

39.简易频率计(基于等精度测量法)(2)

&#xff08;1&#xff09;Verilog代码实现&#xff1a; module freq_meter_calc (input clk ,input reset_n ,input clk_test ,output reg [31:0] freq );reg [26:0] cnt0;reg gata_r;reg gata_t;reg [47:0] cnt_clk_test;reg gata_t_test_r…

20240718 每日AI必读资讯

大模型集体失智&#xff01;9.11和9.9哪个大&#xff0c;几乎全翻车了 - AI处理常识性问题能力受限&#xff0c;9.11&#xff1e;9.8数学难题暴露了AI短板。 - 训练数据偏差、浮点精度问题和上下文理解不足是AI在数值比较任务上可能遇到的困难。 - 改进AI需优化训练数据、Pr…

实验07 接口测试postman

目录 知识点 1 接口测试概念 1.1为什么要做接口测试 1.2接口测试的优点 1.3接口测试概念 1.4接口测试原理和目的 2 接口测试内容 2.1测什么 2.1.1单一接口 2.1.2组合接口 2.1.3结构检查 2.1.4调用方式 2.1.5参数格式校验 2.1.6返回结果 2.2四大块 2.2.1功能逻辑…

C++ Qt 登录界面 Login

效果: 核心代码: #include "simpleapp.h" #include "ui_simpleapp.h" #include <QMessageBox>SimpleApp::SimpleApp(QWidget *parent): QMainWindow(parent), ui(new Ui::SimpleApp) {ui->setupUi(this); }SimpleApp::~SimpleApp() {delete ui; …