从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍“java怎么找到数组中的多数元素”,在日常操作中,相信很多人在java怎么找到数组中的多数元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java怎么找到数组中的多数元素”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联从2013年创立,先为来宾等服务建站,来宾等地企业,进行企业商务咨询服务。为来宾企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
问题:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。比如:数组 [3,2,3] 的多数元素是 3 ,数组 [2,2,1,1,1,2,2] 的多数元素是 2 。
既然多数元素在数组中出现的次数大于 ⌊ n/2 ⌋ ,给这个数组排个序,然后取中间的值,得到的肯定就是多数元素,要不然不符合题意。
这样的话,两行代码就可以搞定:
java Arrays.sort(nums); return nums[nums.length >> 1];
但是时间复杂度是 O(nlogn) ,空间复杂度是 O(logn) 。
咱们平时都是怎么投票的呢?大家每个人都选一个人写在纸条上,然后开始拆开纸团瞅瞅选的是谁。刚开始默认大家都是 0 票,然后纸条上投的是谁,这个人就多一票,最后看谁的票数比较多。回到咱们这个题目,既然是众数,而且出现的次数大于 ⌊ n/2 ⌋ ,那我们可以假设一个数就是要求的众数,同时设置这个数字出现的次数为 0 ,然后和接下来的数字进行比较。如果一样呢,咱们把这个数字出现的次数加上 1 ,如果不一样,就让次数减 1 ,当这个值减到 0 时,说明刚开始假设的数字不是众数,那就换当前的这个数字,继续循环。这样最后这个数字出现的次数一定是大于等于 0 的,要不然就不符合 出现的次数大于 ⌊ n/2 ⌋
这个题意了,最后的最后,将真正的众数返回即可。
java // 设置初始票数为 0 int count = 0 ; // 先将要求的众数定义为空 Integer majorityElement = null; // 循环数组 for(int num : nums){ // 当 count 为 0 时,假设当前的数为要求的众数 if (count == 0){ majorityElement = num; } // 当 num 等于假设的众数时, count 就加 1 count += ( num == majorityElement ) ? 1 : -1 ; } // 最后返回真正的众数 return majorityElement;
到此,关于“java怎么找到数组中的多数元素”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图