LeetCode刷题集(二)(LeetCode 2037使每位学生都有座位的最少移动次数)

news/2024/11/28 13:34:29/

学习目标:

掌握LeetCode2037使每位学生都有座位的最少移动次数


题目内容:

一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示。给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数组 students ,其中 students[j] 是第 j 位学生的位置。你可以执行以下操作任意次:增加或者减少第 i 位学生的位置,每次变化量为 1 (也就是将第 i 位学生从位置 x 移动到 x + 1 或者 x - 1)请你返回使所有学生都有座位坐的 最少移动次数 ,并确保没有两位学生的座位相同。
请注意,初始时有可能有多个座位或者多位学生在 同一 位置。

示例1、输入:seats = [3,1,5], students = [2,7,4]
输出:4
解释:学生移动方式如下:
第一位学生从位置 2 移动到位置 1 ,移动 1 次。
第二位学生从位置 7 移动到位置 5 ,移动 2 次。
第三位学生从位置 4 移动到位置 3 ,移动 1 次。
总共 1 + 2 + 1 = 4 次移动。

示例2、

输入:seats = [4,1,5,9], students = [1,3,2,6]
输出:7
解释:学生移动方式如下:
第一位学生不移动。
第二位学生从位置 3 移动到位置 4 ,移动 1 次。
第三位学生从位置 2 移动到位置 5 ,移动 3 次。
第四位学生从位置 6 移动到位置 9 ,移动 3 次。
总共 0 + 1 + 3 + 3 = 7 次移动。

示例3、输入:seats = [2,2,6,6], students = [1,3,2,6]
输出:4
解释:学生移动方式如下:
第一位学生从位置 1 移动到位置 2 ,移动 1 次。
第二位学生从位置 3 移动到位置 6 ,移动 3 次。
第三位学生不移动。
第四位学生不移动。
总共 1 + 3 + 0 + 0 = 4 次移动。


题目分析时间:

首先我们一拿到本题,我们应该想象一下,本题的解题思路,我的思路是先把它排序一下,让他的顺序从小到大进行排序,那么如果我们用c语言如何对数组进行排序呢?我们要是手写一个排序的话时间复杂度肯定很高那么这个时候我们就想到了利用c语言中的库函数qsort,其底层是用快速排序来写的,时间复杂度极大的得到了提高,底下图片就是qsort的函数,那么我们已经把数据排序好了,这个时候是不是在用每个学生的数据进行相减就能解出来啦,对的没错!
在这里插入图片描述
在这里插入图片描述


代码产出:

int cmp(const void* s1,const void* s2)
{return (*(int*)s1 - *(int*)s2);
}int minMovesToSeat(int* seats, int seatsSize, int* students, int studentsSize){qsort(seats,seatsSize,sizeof(int),cmp);qsort(students,studentsSize,sizeof(int),cmp);int res = 0;for(int i = 0;i < studentsSize;i++){res += (abs(seats[i] - students[i]));}return res;
}

这里的abs是去绝对值的意思!好啦今日的分享结束啦!


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

相关文章

在vue中如何使用nextTick ?nextTick 的原理是什么?

Vue.js 是一个流行的前端框架&#xff0c;它提供了一种响应式的数据绑定机制&#xff0c;使得页面的数据与页面的 UI 组件之间能够自动同步。Vue.js 中的数据驱动模型可以让开发者专注于业务逻辑&#xff0c;而不用过多地关注页面 DOM 操作的细节。然而&#xff0c;在某些情况下…

【hello Linux】进程概念(下)

目录 1. 通过系统调用创建进程—fork 1.1 通过fork创建进程&#xff1a; 1.2 如何不退出 vim 直接执行命令呢&#xff1f; 3. fork创建进程的本质 4. 父子进程的分流&#xff1a; 2. 进程状态 3. 信号 3.1 显示全部信号 3.1 停止进程 3.2 继续进程 3.3 杀死进程 后台进程 4. 僵…

为什么FTP会随着时间的过去而变慢?

有人问&#xff1a;我在XP上有FZ客户端3.5.3&#xff0c;在Vista上有0.9.41服务器。通过已经很慢的连接传输大文件时&#xff0c;我注意到速度开始时约为40kb / s&#xff0c;但逐渐趋于稳定&#xff0c;约为20kb / s&#xff0c;并保持这种状态。如果我退出客户端并重新启动它…

批处理脚本用法总结

目录 一、常用命令二、基本语法1. rem 和 ::2. echo 和 3. pause4. errorlevel5. title6. color7. goto 和 :8. find9. start10. assoc 和 ftype11. pushd 和 popd12. call13. if 三、常用特殊符号1. 2. %3. >4. >> 四、常见用法1. 设置临时环境变量2. 启动CMD执行命令…

systemctl 命令设置开机自启动失败

1.案例现象 我在 3 月 31日的时候发表了一篇《shell 脚本之一键部署安装 Nginx 》&#xff0c;介绍了如何通过 shell 脚本一键安装 Nginx 我脚本中执行了 Nginx 开机自启动的命令&#xff0c;当我使用 systemctl status nginx 命令复核的时候&#xff0c;我发现 Nginx 服务设…

redis学习

Redis 1.安装 vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网络安装gcc依赖 yum install -y gcc tclcd redis-6.2.11 make && make installcp redis.conf.bck redis.conf #修改redis.conf bind 0.0.0.0 daemonize yes requirepass 123456cd /usr/local/src…

Attention注意力机制

加粗样式通俗理解&#xff1a;你会注意什么&#xff1f; 对于一个模型而言&#xff08;CNN&#xff0c;LSTM&#xff09;&#xff0c;模型本身很难决定什么重要什么不重要&#xff0c;因此注意力机制诞生了。 注意力机制&#xff1a;我们会把焦点聚焦在比较重要的事务上 怎么…

一本通 3.4.6 拓扑排序

1352&#xff1a;【例4-13】奖金 【题目描述】 由于无敌的凡凡在2005年世界英俊帅气男总决选中胜出&#xff0c;Yali Company总经理Mr.Z心情好&#xff0c;决定给每位员工发奖金。公司决定以每个人本年在公司的贡献为标准来计算他们得到奖金的多少。 于是Mr.Z下令召开m方会谈…