?
Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ? n/2 ? times.
You may assume that the array is non-empty and the majority element always exist in the array.
½âÌâ˼·£º
1¡¢ÓÃÒ»¸ömap¼Ç¼ÿ¸öÊýµÄ³öÏֵĴÎÊý¡£Èô³öÏÖij¸öÊýµÄ¼ÆÊý´óÓÚn/2£¬·µ»Ø¸ÃÊý¡£
?
class Solution {
public:
int majorityElement(vector
&num) {
int len = num.size();
map
count; for(int i=0; i
len/2){ return num[i]; } } return 0; } };
2¡¢¶ÔÓÚÒ»¸öÅÅÐòÊý×éÀ´Ëµ£¬ÈôÖÚÊý´æÔÚ£¬ÖÚÊý¿Ï¶¨ÊÇÖмäÄǸöÊý¡£
class Solution {
public:
int majorityElement(vector
&num) {
std::sort(num.begin(), num.end());
return num[num.size()/2];
}
};
3¡¢Í¶Æ±Ëã·¨¡£¿ÉÒÔÏë³É´òÀÞ̨£¬Ì¨ÉÏÄǸöÈËÈôÊäÓ®´ÎÊýÏàͬ£¬ÔòÏĄ̂£¬×îºó´ò°ÜËûµÄÈËÉĮ̈¡£ÖÚÊý¿Ï¶¨ÊÇ×îºóµÄÓ®¼Ò¡£Õâ¸öËã·¨ÓõÄʱ¼ä×îÉÙÁË¡£
?
?
class Solution {
public:
int majorityElement(vector
&num) {
int len = num.size();
if(len==0){
return 0;
}
int candidate = num[0];
int count = 1;
for(int i=1; i
4¡¢Î»Ëã·¨¡£¿¼Âǵ½Ã¿¸öÊý¶¼¿ÉÒÔÓÃ32λ¶þ½øÖƱíʾ£¬¶Ôÿ¸öÊýµÄÿһλ¶þ½øÖÆÎª1µÄ¼ÆÊý£¬Èôij¸ö¶þ½øÖÆÎ»µÄ¼ÆÊý´óÓÚn/2£¬¿Ï¶¨ÓÐÖÚÊýµÄ¹±Ïס£ÕâÖÖ°ì·¨ºÜÐÂÓ±£¬ËäÈ»ËٶȱȲ»ÉÏͶƱËã·¨£¬µ«ÊÇ¿ªÍØË¼Î¬Âï¡£ÕâÀï˵һµã£¬µÚÒ»ÖÖ·½·¨ÖУ¬¶¨ÒåÁËmap
count£¬¶ÔÓÚÿ¸öмÓÈëµÄ¼üÖµ£¬ÆäֵĬÈÏΪ0£¬µ«ÊǶÔÓÚintÊý×éÀàÐÍ£¬Ã¿¸öÊý×é³õʼ»¯ÎªËæ»úÖµ£¬Òò´ËÒªÓÃmemsetº¯Êýѽ¡£
?
?
class Solution {
public:
int majorityElement(vector
&num) {
int len = num.size();
if(len==0){
return 0;
}
int bitCount[32];
memset(bitCount, 0, 32*sizeof(int));
for(int i=0; i
len/2) //µÚiλΪ1µÄ¼ÆÊý´óÓÚÒ»°ë£¬¿Ï¶¨ÓÐÖÚÊýµÄ¹±Ï× result += (int)pow(2, i); } return result; } };
?
?