当前位置: 首页 > 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.dtcms.com/a/325601.html

相关文章:

  • 深入理解与灵活应用 std::optional
  • vue3中的子组件向父组件通信和父组件向子组件通信
  • python --nacos相关
  • MSE ZooKeeper:Flink高可用架构的企业级选择
  • 《图解技术体系》New generation CMDB resource model framework
  • 自然语言处理实战:用LSTM打造武侠小说生成器
  • 【AI论文】R-Zero:从零数据起步的自进化推理大语言模型
  • JavaScript 中如何实现大文件并行下载
  • AI(2)-神经网络(激活函数)
  • 支持小语种的在线客服系统,自动翻译双方语言,适合对接跨境海外客户
  • NY185NY190美光固态闪存NY193NY195
  • 《深度剖析前端框架中错误边界:异常处理的基石与进阶》
  • pom.xml父子模块配置
  • 深入理解Android Kotlin Flow:响应式编程的现代实践
  • 部署open-webui到本地
  • TDengine IDMP 基本功能(1.界面布局和操作)
  • 某地渣库边坡自动化监测服务项目
  • 企业高性能web服务器1
  • FPGA实现Aurora 8B10B图像视频传输,基于GTX高速收发器,提供4套工程源码和技术支持
  • 新手向:Python实现数据可视化图表生成
  • LVPECL、LVDS、LVTTL、LVCMOS四种逻辑电平标准的全面对比
  • DDoS 攻击成本测算:从带宽损耗到业务中断的量化分析
  • FPGA硬件设计1 最小芯片系统-Altera EP4CE10F17C8、Xilinx xc7a100t
  • 邬贺铨院士:AI与数字安全融合是数字化建设核心驱动力
  • 使用TextureView和MediaPlayer播放视频黑屏问题
  • 设计模式(三)——观察者模式
  • 数据结构:串、数组与广义表
  • 使用 Rust 创建 32 位 DLL 的完整指南
  • VoxCraft-生数科技推出的免费3D模型AI生成工具
  • Rust 库开发全面指南