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

鞍山建设集团网站外国贸易平台

鞍山建设集团网站,外国贸易平台,网站结构优化包括什么,黄州网站建设这个题非常简单&#xff0c;解法有很多种&#xff0c;我用的是HashMap记录每个元素出现的次数&#xff0c;只要次数大于数组长度的一半就返回。下面是我的代码&#xff1a; class Solution {public int majorityElement(int[] nums) {int len nums.length/2;HashMap<Integ…

这个题非常简单,解法有很多种,我用的是HashMap记录每个元素出现的次数,只要次数大于数组长度的一半就返回。下面是我的代码:

class Solution {public int majorityElement(int[] nums) {int len = nums.length/2;HashMap<Integer,Integer> map = new HashMap<Integer, Integer>();for(int i=0;i<nums.length;i++){int key = nums[i];if(!map.containsKey(key)){map.put(key,1);if(map.get(key) > len) return key;}else{map.put(key,map.get(key)+1);if(map.get(key) > len) return key;}}return -1;}
}

题解还有一种更牛逼的解法,把数组排序,然后返回数组中间的那个数就行,因为如果这个数出现的次数大于数组长度的一半的话,排完序后数组中间那个数一定是它。

class Solution {public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length/2];}
}

还有用分治法的,如果一个数是这个数组的总数,那么把这个数组分成两个子数组后,这个数至少是其中一个数组的众数,然后选出两个众数中真正的众数即可。可以采用递归的方法,不断把数组分成两个子数组,直到子数组的长度为1,合并左右两个数组,然后再不断合并,最后就可以找到整个数组的众数了

class Solution {private int countInRange(int[] nums, int num, int lo, int hi) {int count = 0;for (int i = lo; i <= hi; i++) {if (nums[i] == num) {count++;}}return count;}private int majorityElementRec(int[] nums, int lo, int hi) {// base case; the only element in an array of size 1 is the majority// element.if (lo == hi) {return nums[lo];}// recurse on left and right halves of this slice.int mid = (hi - lo) / 2 + lo;int left = majorityElementRec(nums, lo, mid);int right = majorityElementRec(nums, mid + 1, hi);// if the two halves agree on the majority element, return it.if (left == right) {return left;}// otherwise, count each element and return the "winner".int leftCount = countInRange(nums, left, lo, hi);int rightCount = countInRange(nums, right, lo, hi);return leftCount > rightCount ? left : right;}public int majorityElement(int[] nums) {return majorityElementRec(nums, 0, nums.length - 1);}
}

还有一种Boyer-Moore 投票算法,他是先选一个候选数,先把他的次数定为0,如果下一个数和他一样次数加一,如果不一样次数减一,如果次数为0,侯选数换成下一个数,最后的侯选数就是众数。

class Solution {public int majorityElement(int[] nums) {int count = 0;Integer candidate = null;for (int num : nums) {if (count == 0) {candidate = num;}count += (num == candidate) ? 1 : -1;}return candidate;}
}

http://www.yayakq.cn/news/566443/

相关文章:

  • 如何发布网站到域名中国中国建设银行网站首页
  • 企业做网站的流程德州购物网站建设
  • 淄博网站制作定制技术关键词吉他谱
  • 如何建设一个自己+的网站首页网站快速排名公司
  • 济南网站制作策划app开发公司的联系方式
  • 做品牌设计网站建e网室内设计效果图门厅
  • 小语种网站开发网站开发项目运营经理岗位职责
  • 手机免费建设网站photoshop 做网站logo
  • 外贸网站优化免费渠道苏州企业建设网站公司
  • 简述电子商务网站的建设步骤网站建设的目入图片
  • 沈阳做招聘网站制作营销网站
  • 网站开发一定要用框架嘛wordpress 图片缓存
  • php mysql网站开发工资seo关键词排名教程
  • 如何做网站调研百度手机
  • 洛阳网站开发微信公众平台开发者中心
  • 国外外贸网站大全wordpress插件 2017
  • 上海自适应网站制作网站开发前台与后台的交互
  • 哪里买到纯净网站模板制作网站好的公司
  • 电脑上做网站江津区网站建设
  • 只做百度移动端网站可以吗黄金外汇网站建设
  • 研磨材料 东莞网站建设苏州调查公司电话
  • 做淘宝一件代发的网站搜狗网站排名怎么做
  • 怎样增加网站的权重门户网站制作费用
  • 长沙做网站找哪家好wordpress 置顶排序
  • 网站内部优化php开发网站建设
  • 学网站建设工作公司网站建设多少费用济南兴田德润评价
  • 网站式的公司记录怎么做如何设计好网站
  • 做网站优化有必要爱站网关键词长尾挖掘
  • 自己的域名可以转给做网站的账号吗网站建设教程学校
  • 全屏响应式网站模板怎么在百度制作自己的网站