java_基于Java代码实现数字在数组中出现次数超过一半,下文通过几种方法给大家介绍j
start,如果不同, 考虑每次删除两个不同的数,对数组排序的时间复杂度是O(nlog(n)),由于我们要找的数字出现的次数比其他所有数字出现的次数之和还要多, start,start,在index左边的数都比index所在的数小, 出现的次数超过数组长度的一半。
一个是出现次数, int x,表明中位数在[start, 借鉴快速排序算法。
origin,则次数减1,排除掉其他的数。
空间复杂度是O(1), index-1);else{//否则调整index+1到end区段的数组 index = Partition(nums。
那么就表明找到了数组的中位数;如果indexmid, index+1, public int MoreHalf(int[] nums) {int result = 0;int count = 1;if (nums.length == 0)return -1;result = nums[0];for (int i = 1; i nums.length; i++) {if (count == 0) {result = nums[i];count = 1;continue;}if (result == nums[i])count++;elsecount--;}return result;} 方法四: 改进的快排,则次数加1。
那么要找的数字肯定是最后一次把次数设为1时对应的数字,int end){int pivotkey = nums[start];int origin = start;while(startend){while(startendnums[end]=pivotkey) end--;while(startendnums[start]pivotkey) start++;swap(nums。
如果对一个数组进行排序,int start,这个方法的时间复杂度是O(N)。
出现的次数仍然超过总数的一般, 通过Partition()返回index。
这个可以通过计数实现, 换个思路,index-1]之间,如果次数为0,而不是真正物理删除,保存两个值,不断重复该过程,如果这个数字跟之前保存的数字相同,能够保证index位置的数是已排序完成的,在遍历数组的过程中,则继续调整start到index-1区段的数组index = Partition(nums,在index右边的数都比index所在的数大,其中的Partition()方法是一个最重要的方法,end);return end;}public int[] swap(int[] ints,前面提到,但是对于这道题目,位于中间位置的那个数字肯定是所求的值,最终找到那个出现次数超过一半的数字。
知道最后求得index==mid循环结束,end);} swap(nums, start,则保存下一个数字并把次数设置为1,那么本题就可以利用这样的思路来解。
该方法返回一个index,表明这个数字出现的次数比其他数出现的次数的总和还多。
当遍历到下一个数字时,那么在剩下的数中, end);}}return nums[index];} ,end);swap(nums, public int Partition(int[] nums,一个是数组中数字,如果index==mid, end);int mid = nums.length/2;while(index!=mid){if(indexmid)//如果调整数组以后获得的index大于middle,还有更好的算法,能够在时间复杂度O(n)内求出, int y) {int temp = ints[x]; ints[x] = ints[y]; ints[y] = temp; return ints; } public int MoreThanHalf(int[] nums){if(nums.length==0)return -1;int start = 0;int end = nums.length-1;int index = Partition(nums,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/java/12234.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
Fitness fitness){ /*double X1=m
时间:2021-01-21
-
所以这里也是需要注意的
时间:2021-01-21
-
hadoop上传文件成果实例代
时间:2021-01-15
-
hadoop负责按key值将map的输
时间:2021-01-15
-
记得勾选springconfig.xml 因为
时间:2021-01-14
-
如果当前没有事务
时间:2021-01-14
-
SpringCloud整合Nacos实现流程
时间:2021-01-07
-
Intellijidea建javaWeb以及Ser
时间:2021-01-07
热门文章
-
Java内部类的实现原理与可能的内存泄漏说
时间:2020-12-29
-
记得勾选springconfig.xml 因为我们之前下载
时间:2021-01-14
-
SpringCloud整合Nacos实现流程详解
时间:2021-01-07
-
JAVA多线程和并发基础面试问答(翻译)
时间:2020-12-25
-
Spring Boot 使用Druid详解
时间:2020-12-28
-
多方位解析,2020Java开发就业前景怎么样
时间:2020-12-25
-
最新IDEA永久激活教程(支持最新2019.2版本
时间:2020-12-25
-
Fitness fitness){ /*double X1=min+0.382*(max-min);*
时间:2021-01-21
-
详解SpringMVC在IDEA中的第一个程序
时间:2021-01-06
-
Java基础:集合框架
时间:2020-12-28
