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

最大间距问题

LeetCode164 最大间距 

 基数排序

#include <iostream>
#include <vector>
using namespace std;class Solution {
public:int maximumGap(vector<int>& nums) {int n=nums.size();if(n<2) return 0;int exp=1;int Max=nums[0];vector<int> buf(n);for(int i=1;i<n;i++) Max=max(Max,nums[i]);while(exp<=Max){vector<int> cnt(10,0);for(int i=0;i<n;i++){int digit=(nums[i]/exp)%10;cnt[digit]++;}for(int i=1;i<10;i++) cnt[i]=cnt[i]+cnt[i-1];for(int i=n-1;i>=0;i--){int digit=(nums[i]/exp)%10;buf[cnt[digit]-1]=nums[i];cnt[digit]--;}copy(buf.begin(),buf.end(),nums.begin());exp*=10;}int res=0;for(int i=1;i<n;i++) res=max(nums[i]-nums[i-1],res);return res;}
};

分桶法

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;class Solution {
public:int maximumGap(vector<int>& nums){int Min=*min_element(nums.begin(),nums.end());int Max=*max_element(nums.begin(),nums.end());if(Max-Min<=1) return Max-Min;int n=nums.size();int d=(Max-Min+n-2)/(n-1);vector<pair<int,int>> buckets((Max-Min)/d+1,{0x3f3f3f3f,-0x3f3f3f3f});for(int i=0;i<n;i++){auto& [mn,mx]=buckets[(nums[i]-Min)/d];mn=min(nums[i],mn);mx=max(mx,nums[i]);}int res=0;int pre_max=0x3f3f3f3f;for(auto [mn,mx]:buckets){if(mx!=-0x3f3f3f3f){res=max(res,mn-pre_max);pre_max=mx;}}return res;}    
};

http://www.lryc.cn/news/435324.html

相关文章:

  • 【Hadoop|MapReduce篇】Hadoop序列化概述
  • 【Elasticsearch系列】Elasticsearch中的分页
  • NLTK:一个强大的自然语言处理处理Python库
  • NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
  • 【支付】Stripe支付通道Java对接(产品 价格 支付 查询 退款 回调)
  • Unity3D 小案例 像素贪吃蛇 01 蛇的移动
  • 【STM32 MCU】stm32MCUs 32-bit Arm Cortex-M
  • html+css网页设计 旅游 雪花旅行社5个页面
  • vue3中的实例
  • 9.测试计划(包含笔试/面试题)
  • 这 7 款AI应用将让你全新的iPhone 16成为电影制作的强大工具
  • 自注意力机制(self-attention)
  • Nuxt3入门:过渡效果(第5节)
  • 【开发工具】IntelliJ IDEA插件推荐:Json Helper——让JSON处理更高效
  • Lua垃圾回收机制
  • Java学习路线:详细指引
  • 商家转账到零钱如何开通-微信支付
  • 自研商家如何快速接入电商平台订单数据?
  • Win10下借助CMake编译OpenMVS
  • 04_定时器与数码管基础
  • Python 数学建模——方差分析
  • 计算机视觉中,什么是上下文信息(contextual information)?
  • YOLOv5改进 | 模块缝合 | C3 融合RVB + EMA注意力机制【二次融合】
  • mysql 更改默认端口号 新增用户密码 赋予权限
  • 吐血整理nacos 作为springcloud的配置中心和注册中心
  • 【秋招笔试】9.09阿里国际秋招(已改编)-三语言题解
  • sql语句在sqlserver中能查询出结果,但是代码中查不出来
  • 【机器学习】决策树与随机森林:模型对比与应用案例分析
  • Apache SeaTunnel基础介绍
  • 阿里旗下土耳其电商Trendyol计划进军欧洲市场