169. 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.
tips:
1. 遍历数组的时候保存两个值:一个是数组的数字,一个是次数;
2. 当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,次数+1;
3. 如果下一个数字和我们之前保存的数字不同,则次数-1
4. 如果次数为0,我们需要保存下一个数字,并把次数设为1
5. 由于我们要找的数字出现的次数比其他所有数字出现的次数之和还要多,那么要找的数字肯定是最后把次数设为1时对应的数字;
6. 在下面的代码之后,还要检查下数组是不是空,选出来的数字的次数是不是真的超过了数组长度的一半;(这里忘了验证哈)
public class Solution {
public int majorityElement(int[] nums) {
int times=0;
int number=0;
for(int i=0;i<nums.length;i++){
if(times==0) number=nums[i];
if(nums[i]==number)times++;
else times--;
}
return number;
}
}