方法一:排序,输出中位数;
方法二:每次拿掉两个不同的元素,最后剩余就是;
方法三:用栈,栈为空或栈顶元素和当前元素相同入栈,不同则出栈,并删除两元素,栈中剩余即为所求;
class Solution {
public int majorityElement(int[] nums) {
Stack<Integer> stack = new Stack<Integer>();
for(int item : nums){
if(stack.isEmpty() || stack.peek() == item)
stack.push(item);
else
stack.pop();
}
return stack.isEmpty() ? 0 : stack.pop();
}
}
方法四:桶排序;
方法五:根据数组特点查找;
class Solution {
public int majorityElement(int[] nums) {
int count = 1, flag = nums[0], n = nums.length;
for(int i=1; i<n; i++){
flag = count == 0 ? nums[i] : flag;
count += nums[i] == flag ? 1 : -1;
}
return flag;
}
}