本文主要是介绍摩尔投票法的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摩尔投票法基于这样一个事实,当一个数的重复次数超过数组长度的一半,每次将两个不相同的数删除,最终剩下的就是要找的数。
算法步骤:
1.count = 0; num = nums[0]; 表示从此时开始计算投票。
2.遍历数组,如果接下来出现的数字与num相同,count加1。如果不同,count减1。
3.如果count == 0,表示之前出现的所有数字中num都是可以凑成不同的数对,一起抵消。大于1/2 n的数还会在后面出现。
4.如果count < 0,表示之前num中的数字没有到一半,所以此时完全不用考虑前面存储的元素,“删除”他们。直接从现在的新的元素开始计数,并令count = 0。
class Solution {public int majorityElement(int[] nums) { //摩尔投票法int count = 0;int num = nums[0];for(int i = 1; i< nums.length; i++){if(nums[i] != num){count--;if(count < 0){count = 0;num = nums[i];}}elsecount++;}return num;}
}
这篇关于摩尔投票法的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!