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

新手如何免费建网贵州二级站seo整站优化排名

新手如何免费建网,贵州二级站seo整站优化排名,深圳独立站建站公司,门户网站模板下载这个题非常简单&#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.dinnco.com/news/85872.html

相关文章:

  • dede后台网站地图怎么做青岛seo优化
  • 优化网站seo策略裤子seo关键词
  • 做网站 站内搜索引擎搜索引擎收录入口
  • wordpress怎么换头像不显示四川seo整站优化费用
  • axure直接做网站seo裤子的关键词首页排名有哪些
  • dreamwearver可以做网站吗百度推广怎么优化
  • 鸡泽网站建设案例太原模板建站定制网站
  • wordpress目录分类与菜单外贸seo推广招聘
  • 成都网络优化网站建设满足seo需求的网站
  • 南京小程序网站开发快速排名seo
  • 新型网站建设百度指数批量获取
  • 网站营销做的好的律师专业网站优化推广
  • 政府网站设计的内容有哪些查权重网站
  • iis6建设网站凡科网站建站教程
  • 网站首页页脚seo秘籍优化课程
  • 四川建设厅网上查询网站网络销售怎么做才能有业务
  • 武汉官方网站设计公司seo咨询师
  • 微网站 注册最近有新病毒出现吗
  • 万网x3主机l系统放两个网站网站搭建平台
  • 广西百度推广外贸网站谷歌seo
  • 网站模板源码平台app开发公司排行榜
  • 广告设计软件用哪个深圳优化seo排名
  • 坑梓网站建设包括哪些网站排名优化公司
  • 淘宝做店招的网站google浏览器官方下载
  • 网站建设与品牌策划方案报价seo分析是什么意思
  • wordpress双击图片放大seo属于运营还是技术
  • 凯新认证北京有限公司seo排名教程
  • 制作游戏网站公司网站seo优化服务商
  • 中央批评了上海精准防控沧州网站seo
  • 做网站首页轮播图代码温州seo外包公司