MySQL調優的一些總結
阿新 • • 發佈:2022-04-11
劍指 Offer 39. 陣列中出現次數超過一半的數字
題目
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
思路
方法一:雜湊表
通過一個 hashmap 記錄每個數的個數,如果大於一半就輸出。
方法二:排序
排序,然後最中間的數就是次數超過陣列長度一半的數
方法三:Boyer-Moore 投票演算法
核心就是票數相抵,超過一半的肯定會留到最後
知乎上面看到的一種回答
https://www.zhihu.com/question/49973163/answer/617122734
程式碼
class Solution { public: int majorityElement(vector<int>& nums) { int candidate = -1; int count = 0; for (int num : nums) { if (candidate == num) { ++count; } else if (--count < 0) { candidate = num; count = 1; } } return candidate; } };