LeetCode - Majority Element
2015-03-25 04:50
302 查看
https://leetcode.com/problems/majority-element/
这道题虽然是easy难度的,但还挺多解法,挺有意思的。我最开始想到的是hash table解法,很简单,代码就不写了。
另外,因为众数一定存在,所以由于有一个candidate解法,即把当前遇到的数视为candidate,如果碰到不是candidate的数,则candidate count减1,如果是candidate,则candidate count加1,如果count为0,则更新candidate至下一个数。方法如下:
另外,还有bit manipulation的解法如下,即统计整数32位中,每位是1的次数,如果是1的次数大于 num.length/2, 说明众数这一位肯定是1:
但这个解法,过不了整数最大和最小值,不知道为啥。。。。。。。
另外还有divide and conquer, random selection的解法,描述见:
/article/7088903.html
这道题虽然是easy难度的,但还挺多解法,挺有意思的。我最开始想到的是hash table解法,很简单,代码就不写了。
另外,因为众数一定存在,所以由于有一个candidate解法,即把当前遇到的数视为candidate,如果碰到不是candidate的数,则candidate count减1,如果是candidate,则candidate count加1,如果count为0,则更新candidate至下一个数。方法如下:
public int majorityElement(int[] num){ int candidate = 0; int count = 0; for(int i=0; i<num.length; i++){ if(count==0){ candidate = num[i]; count++; } else if(num[i]==candidate) count++; else count--; } return candidate; }
另外,还有bit manipulation的解法如下,即统计整数32位中,每位是1的次数,如果是1的次数大于 num.length/2, 说明众数这一位肯定是1:
public int majorityElement(int[] num) { int[] bitcount = new int[32]; for(int i=0; i<num.length; i++){ for(int j=0; j<32; j++){ if((num[i] & (1<<j)) != 0) bitcount[j]++; } } int rst = 0; for(int i=0; i<32; i++){ if(bitcount[i]>(num.length/2)){ rst += Math.pow(2, i); } } return rst; }
但这个解法,过不了整数最大和最小值,不知道为啥。。。。。。。
另外还有divide and conquer, random selection的解法,描述见:
/article/7088903.html
相关文章推荐
- LeetCode--Majority Element(出现次数最多的元素)Python
- 【leetcode】Array—— Majority Element(169)
- 【leetcode】【169】Majority Element
- Divide and Conquer -- Leetcode problem169: Majority Element
- LeetCode Majority Element
- leetcode:Majority Element
- LeetCode "Majority Element"
- leetcode:Majority Element
- LeetCode---Majority Element
- Leetcode-169 Majority Element
- [LeetCode] Majority Element
- [leetcode]13 Majority Element
- LeetCode(169)Majority Element
- 229. Majority Element II LeetCode
- [Leetcode] Majority Element
- Leetcode.Majority Element
- [leetcode] Majority Element
- LeetCode【169. Majority Element】
- LeetCode : Majority Element
- [Leetcode]Majority Element II