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

基数排序---Java版本

题目:leetcode 164

在这里插入图片描述

class Solution {public int maximumGap(int[] nums) {if(nums.length<2){return 0;}radixSort(nums);int max = 0;for(int i = 1;i<nums.length;i++){max=Math.max(max,nums[i]-nums[i-1]);}return max;}public void radixSort(int[] nums){int max = Arrays.stream(nums).max().getAsInt();//查找最大值//按照个位,十位,百位。。。直到最高位for(int i = 1;max/i>0;i*=10){countinSort(nums,i);}}public void countinSort(int[] nums,int radix){int n = nums.length;int[] output=new int[n];int[] count = new int[10];//0-9for(int num:nums){int dig = (num/radix)%10;count[dig]++;} //次数累加,以此找到元素对应的位置for(int i = 1;i<10;i++){count[i]+=count[i-1];}//倒序目的是为了保证对上次排序的相对位置不变// 如:对按照个位排序的结果【21,42,23】  ,按照十位排序,则 23还在21后面,相对位置不变for(int i = n-1;i>=0;i--){int dig  =(nums[i]/radix)%10;output[count[dig]-1]=nums[i];count[dig]--;}// 将排序结果复制回原数组//  参数解释:// output:源数组。// 0:源数组起始位置。// nums:目标数组。// 0:目标数组起始位置。// n:要复制的元素数量。System.arraycopy(output, 0, nums, 0, n);}}
Arrays.stream(nums)将数组 nums 转换为一个 IntStream(整数流),便于后续操作。.max()调用流的 max() 方法,返回一个 OptionalInt 对象(可能包含最大值,或为空数组时为空)。.getAsInt()从 OptionalInt 中提取最大值(若数组为空会抛出 NoSuchElementException,但题目已约束 nums.length ≥ 1)。

相关文章:

  • springboot上传文件
  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • 解锁集成电路制造新建项目的防震黑科技-江苏泊苏系统集成有限公司
  • 纯彩天气隐私政策
  • java高级 -动态代理
  • unix的定时任务和quartz和spring schedule的cron表达式区别
  • 信息论基础理论与应用全面指南
  • 前端配置nginx代理
  • 原生js实现数据响应方法2.0
  • 深度学习入门(十三):加深网络
  • Linux Docker 安装oracle19c数据库教程
  • 【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day
  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 如何用AI设计LOGO,DeepSeek+豆包免费批量生成
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • CodeGeeX - AI编程助手
  • Java Swing 自定义JOptionPane
  • 【文本分类】KG-HTC 知识图谱提升分类准确率
  • 一个网站能放多少关键词/怎么快速刷排名
  • 长沙微网站建设/360收录提交入口
  • 网站策划的最终体现是什么/网站推广费用
  • 怎样在网站是做宣传/店铺推广软文范例
  • 有经验的佛山网站建设/怎么做起泡胶
  • wp做网站需要多久/百度手机网页