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.
A:
就是每次dump两个不同的数字。
public class Solution {
public int majorityElement(int[] num) {
int a = num[0], aCount = 1; // first let b point to a value NOT a
for(int i = 1;i<num.length;i++){
if(num[i]==a){
aCount++;
}else{ // if these two are not equal
aCount--;
if(aCount==0){
i++;
a=num[i]; // because it must exist, so num[i] is within range
aCount=1;
}
}
}
return a;
}
}
用两个地址,记录不同的位置
public class Solution {
public int majorityElement(int[] nums) {
int i1= 0;
for(int i2=0; i2 < nums.length;i2++){
if(nums[i2] != nums[i1]){
int val = nums[i1];
i1++;
// i1 till not equal
while(i1<= i2 && nums[i1] != val){
i1++;
}
}
}
return nums[i1];
}
}
Mistakes:
No comments:
Post a Comment