时间复杂度,空间复杂度
给定一个大小为N的数组,找到其中数量最多的那个元素
要求时间复杂度O(n),空间复杂度O(1)
例:[1,2,3,1,1,3]
“1”出现了三次,所以最多的元素是1
思路
考虑用抵消的思路进行处理,循环遍历相邻数字一样保留,不一样进行抵消.....
public int majorityElement(int[] nums){
// 保存数量最多的那个值
int currentNum = nums[0];
// 计数次数
int count = 1;
for(int i=1;i<nums.length;i++){
if(count == 0 ){
currentNum = nums[i];
count = 1;
}else{
if(currentNum == nums[i]){
count++;
}else{
count--;
}
}
}
return currentNum;
}