给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/majority-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
-----------------------------------------------------------------------------------------------------------------------------
可以理解成用兵打仗,因为多数元素要大于总和的一半以上,所以我自己一个人就可以胜出其他数字加一起的力量。那么遇见和自己相同的相减,减到0换一个数。遇见相同的加。最后得出来的就是结果数字。
class Solution {
public int majorityElement(int[] nums) {
int ans = nums[0];
int num = 1;
if(nums.length <= 1) return ans;
for(int i = 1; i < nums.length; i++){
if(ans != nums[i] && num == 1){
ans = nums[i];
}else if(ans != nums[i] && num > 1){
num--;
}else{
num++;
}
}
return ans;
}
}