Majority Number III数组
给定一个数组(长度为L),找到全部出现频次大于1/k的数字。数据结构
咱们主要使用摩尔投票法(Voting Algorithm)结合Map的数据结构解决此问题。其时间复杂度O(n),空间复杂度O(k)。oop
主元素数量大于数组长度的1/k,所以有k-1一个候选人(Candidate),经过loop整个数组两次获得答案,遍历第一次找有可能的候选人,第二次统计这些候选人出现的频次。 spa
当数组长度L小于k时,直接对全部出现的数字进行统计获得结果。it
当数组长度L大于等于k时,创建一个以<candidate, counter>的容量为k-1的Map,遍历数据进行统计,若是Map的容量未满k-1或者存在candidate的频次为0,将遇到的数字选为candidate; 若是Map的容量已满k-1且全部candidate的频次不为零则全部candidate的频次--。io
References:date
[1]https://www.zhihu.com/question/49973163遍历