leetoce(43).169. Majority Element
来源:互联网 发布:中国现代汉语词典软件 编辑:程序博客网 时间:2024/06/05 07:30
题意:
给一个数组,查找超过n/2(向下取整)次的元素。
初步分析:
这个题不知道在哪本书上看到过,还是怎么的。第一反应就是排序。实现之:
public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2];}还有就是以前学map的时候,也做过类似的练习题(元素出现次数的),那么map的键存储数组值,map的值存储对应出现的次数
public class Solution { public int majorityElement(int[] nums) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int num: nums) { if (!map.containsKey(num)) map.put(num, 1); else{ map.put(num, map.get(num)+1); } if (map.get(num)>nums.length/2) { return num; } } return 0;}}
能不能用分治递归呢?有一个元素在整个数组中有一半甚至更多,我们来思考,这样的话,现在的关键是:数量多(一半或以上),位置不确定。我们现在应该怎么来应用这个条件呢?由于多于一半,我们尝试将整个数组二分,之后,唯一确定发生的事情是什么?在某一半区间里,它仍然大于等于一半。那么,继续二分呢?也一定有一半....我们是不是可以尝试用递归来解决这个问题。
试一试:然后失败了,到最后的时候,是无法判断的哪一者才是要找的元素的。
看到了一种算法,贴上来学习一下:
public int majorityElement(int[] nums) { int count=0, ret = 0; for (int num: nums) { if (count==0) ret = num; if (num!=ret) count--; else count++; } return ret;}
0 0
- leetoce(43).169. Majority Element
- 169.Majority Element && 229. Majority Element II
- [LeetCode]169.Majority Element
- LeetCode 169.Majority Element
- 【LeetCode】169.Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- 169.Majority Element
- [leetcode] 169.Majority Element
- 169. Majority Element
- Leetcode 169. Majority Element
- 【LeetCode】169. Majority Element
- [LeetCode]169. Majority Element
- 169. Majority Element LeetCode
- 169. Majority Element
- 169. Majority Element
- LeetCode 169. Majority Element
- LeetCode 169. Majority Element
- Jetson TX1 开发教程(1)——配置与刷机
- Java中Servlet中cookie类源码
- java中的Set、List、Map的区别与用法
- Unrecognized Windows Sockets error: 0: JVM_Bind异常
- javascript原型对象与原型链
- leetoce(43).169. Majority Element
- 插值查找
- [分享] 揭开美国顶尖生物医学实验室成功的法宝--转
- websphere发布的工程迁移到tomcat容器下(绿色方式)
- js中typeof用法详细介绍
- [李景山php]每天TP5-20161229|thinkphp5-Controller.php
- 随心记
- 润乾报表实现当前数据行变色
- Hash冲突的一点看法