当前位置: 首页 > news >正文

力扣164:最大间距

力扣164:最大间距

  • 题目
  • 思路
  • 代码

题目

给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。

您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。

思路

这道题的思路很简单我们使用合适的排序方法后就可以很顺利的找到最大差值了,那么关键是合法的排序方法是什么?我们常见的排序有:快排,归并,希尔,堆排等等。题目要求我们的时间复杂度和空间复杂度都是O(N),那么有哪些排序是可以完成这个要求的呢?下图是常见的排序的时间复杂度和空间复杂度。
在这里插入图片描述
我们发现只有桶排序和基数排序是符合这个要求的但是桶排序在最坏的情况下还有可能达到O(N^2)。所以我们使用基数排序来完成。

代码

class Solution {
public:int maximumGap(vector<int>& nums) {int n = nums.size();if (n < 2) {return 0;}else if(n == 2){return abs(nums[1] - nums[0]);}// 寻找最大值也就是知道有几位数int maxval = *max_element(nums.begin(),nums.end());vector<int> res(n);long exp = 1;while (maxval >= exp) {// 十个桶vector<int> cnt(10);// 判断每个桶里有几个数for (int i = 0; i < n; i++) {int dig = (nums[i] / exp) % 10;cnt[dig]++;}// 将桶中存储的几个数转换为每个桶里数的下标// 也就是桶中的数前面有几个数for (int i = 1; i < 10; i++) {cnt[i] += cnt[i - 1];}// 将原数组的数按照顺序来放到新数组中for (int i = n - 1; i >= 0; i--) {int dig = (nums[i] / exp) % 10;res[cnt[dig] - 1] = nums[i];cnt[dig]--;}copy(res.begin(),res.end(),nums.begin());exp *= 10;}int maxdiff = 0;for(int i = 1; i < n;i++){maxdiff = max(maxdiff,nums[i] - nums[i-1]);}return maxdiff;}
};
http://www.lryc.cn/news/617455.html

相关文章:

  • 大数据系统架构模式:驾驭海量数据的工程范式
  • React(四):事件总线、setState的细节、PureComponent、ref
  • LeetCode 2438.二的幂数组中查询范围内的乘积:模拟(前缀和可选)
  • C++项目实战(日期类的实现)
  • MFC C++ 使用ODBC方式调用Oracle数据库的详细步骤
  • 重学React(五):脱围机制一
  • 金蝶云星辰:赋能企业数据管理
  • spring boot 整合redis教程
  • 带简易后台管理的米表系统 域名出售系统 自适应页面
  • 帝国理工学院团队研发:Missense3D-PTMdb—— 解析遗传变异与翻译后修饰的交互式工具
  • 计算机网络---交换机
  • 套接字技术、视频加载技术、断点续传技术
  • Horse3D引擎研发笔记(四):在QtOpenGL下仿three.js,封装EBO绘制四边形
  • 2025 年国内可用 Docker 镜像加速器地址
  • Rust面试题及详细答案120道(19-26)-- 所有权与借用
  • 《基于Pytorch实现的声音分类 :网页解读》
  • YOLOv8 训练报错:PyTorch 2.6+ 模型加载兼容性问题解决
  • 【JavaEE】(12) 创建一个 Sring Boot 项目
  • 第二届机电一体化、机器人与控制系统国际会议(MRCS 2025)
  • 34-Hive SQL DML语法之查询数据-3
  • 2025世界机器人大会,多形态机器人开启商业化落地浪潮
  • [4.2-2] NCCL新版本的register如何实现的?
  • GAI 与 Tesla 机器人的具体联动机制
  • 记录一下通过STC的ISP软件修改stc32的EEPROM值大小
  • VoxCraft-生数科技推出的免费3D模型AI生成工具
  • uni-app app端安卓和ios如何申请麦克风权限,唤起提醒弹框
  • 设计模式笔记_结构型_组合模式
  • 5G NTN 卫星测试产品
  • 5G NR 非地面网络 (NTN) 5G、太空和统一网络
  • 用Python实现Excel转PDF并去除Spire.XLS水印