摩尔投票法——Java

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
假设数组是非空的,并且给定的数组总是存在多数元素。

//摩尔投票法
//找出一组数字序列中出现次数大于总数1/2的数字(并且假设这个数字一定存在)->显然这个数字只可能有一个。
//每次从序列里选择两个不同的数字删除掉(“抵消”掉)
//最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。
public int majorityNumber(int[] nums){
     
	int count = 1;
	int major = nums[0];
	for(int i=1; i<nums.length; i++){
     
		if(major == nums[i])
			count++;
		else{
     
			count--;
			if(count == 0){
     
				major = nums[i];
				count = 1;
			}
		}
	}
	return major
}

还有一种思路是,先把数组排序,然后返回中间的那个元素!

你可能感兴趣的:(笔记,java)