这题是leetcode原题:https://leetcode-cn.com/problems/majority-element/
比较令人印象深刻的是官方题解的投票算法,具体解释大家可以去看看,很巧妙的一个方法。
方法五:Boyer-Moore 投票算法
class Solution { public: int majorityElement(vector<int>& nums) { int candidate = -1; int count = 0; for (int num : nums) { if (num == candidate) ++count; else if (--count < 0) { candidate = num; count = 1; } } return candidate; } }; 作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/majority-element/solution/duo-shu-yuan-su-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。复杂度分析
时间复杂度:O(n)。Boyer-Moore 算法只对数组进行了一次遍历。
空间复杂度:O(1)。Boyer-Moore 算法只需要常数级别的额外空间。
全部评论
(0) 回帖