【LeetCode】169. Majority Element
2016-01-31 11:36
465 查看
Given an array of size n, find the majority element. The majority element is the element that appears more than
You may assume that the array is non-empty and the majority element always exist in the array.
解题思想:
与137 Single Number 基本是相近的解题方式。
使用位运算的思想。将每一个INT看作为32位的bit.
将所有相同位置的bit相加以后,如过该位的和大于数组大小的一半
那么就可以判断主元素在该位置的一定是1了。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int result=0;
int temp[32]={0};
int halfsize=nums.size()/2;
for(vector<int>::iterator it=nums.begin();it!=nums.end();it++){
int t = *it;
int sign = t > 0 ? 0:1; //判断用例的符号
for (int i = 0; i<32; i++){
if (t == 0 && sign == 0) { //正数的右移终点
break;
}
else if (t == 0xffffffff && sign == 1){ //负数的右移终点
temp[i] = (temp[i]+1);
}
else{
temp[i] = (temp[i] + (t & 0x1));
t = t >> 1;
}
}
}
for (int j = 31; j >= 0; j--){ //整数数组化为整数
result = result << 1;
if(temp[j]>halfsize){
result = 1 | result;
}
}
return result;
}
};
⌊ n/2 ⌋times.
You may assume that the array is non-empty and the majority element always exist in the array.
解题思想:
与137 Single Number 基本是相近的解题方式。
使用位运算的思想。将每一个INT看作为32位的bit.
将所有相同位置的bit相加以后,如过该位的和大于数组大小的一半
那么就可以判断主元素在该位置的一定是1了。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int result=0;
int temp[32]={0};
int halfsize=nums.size()/2;
for(vector<int>::iterator it=nums.begin();it!=nums.end();it++){
int t = *it;
int sign = t > 0 ? 0:1; //判断用例的符号
for (int i = 0; i<32; i++){
if (t == 0 && sign == 0) { //正数的右移终点
break;
}
else if (t == 0xffffffff && sign == 1){ //负数的右移终点
temp[i] = (temp[i]+1);
}
else{
temp[i] = (temp[i] + (t & 0x1));
t = t >> 1;
}
}
}
for (int j = 31; j >= 0; j--){ //整数数组化为整数
result = result << 1;
if(temp[j]>halfsize){
result = 1 | result;
}
}
return result;
}
};
相关文章推荐
- 初识canvas
- HDU 1495 非常可乐 BFS搜索
- POJ 3650:The Seven Percent Solution
- 【Linux】教你一步一步在Solaris10 X86上卸载vncserver
- 杭电—壮志难酬
- mahout测试朴素贝叶斯分类例子
- 1 线性代数引论
- 通过value取得Map中的Key的方法
- 一元多项式的表示及相加
- 读书笔记--BroadcastReceiver
- Sumsets(POJ 2229 DP)
- BestCoder Round #70(A)数学
- Poj 2406 Power Strings
- Mod in math
- 数组中重复的数字
- hdoj1443Joseph【约瑟夫环 打表】
- Android之自定义dialog对话框
- 关键字 private
- 如何面试前端工程师:Github很重要
- CentOS 7 WIFI显示Hardware Disabled