class Solution {
public:
int majorityElement(vector<int>& nums) {
if (nums.size()==1) {
return nums[0];
}
//insert sort
for (int i = 1; i < nums.size(); i++) {
int value = nums[i];
int j = i - 1;
for (; j >= 0; j--) {
if (nums[j] > value) {
nums[j+1] = nums[j];
} else {
break;
}
}
nums[j+1] = value;
}
return nums[nums.size()/2];
// int most = nums[0];
// int max = 0;
// int temp;
// for (int t = 1; t < nums.size(); t++) {
// temp = 1;
// while (nums[t] == nums[t-1]) {
// temp++;
// t++;
// if (t == nums.size()) {
// if (temp > max) {
// max = temp;
// most = nums[t-1];
// }
// return most;
// }
// }
// if (temp > max) {
// if (temp > nums.size()/2) {
// return nums[t-1];
// }
// max = temp;
// most = nums[t-1];
// }
// }
// return most;
}
};
class Solution {
public:
int majorityElement(vector<int>& nums) {
int candidate = nums.at(0);
int count = 1;
for (int i = 1; i < nums.size(); ++i)
{
if (count == 0)
{
candidate = nums.at(i);
count = 1;
}
else if (nums.at(i) == candidate) //注意:不能写成if 避免count==0后又进入此分支,使count变为2
++count;
else
--count;
}
return candidate;
}
};