演算法 出現次數超過一半的數字

2021-07-03 04:24:52 字數 362 閱讀 8694

題目:陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。

考慮到這個問題本身的特殊性,我們可以在遍歷陣列的時候儲存兩個值:乙個candidate,用來儲存陣列中遍歷到的某個數字;乙個ntimes,表示當前數字的出現次數,其中,ntimes初始化為1。當我們遍歷到陣列中下乙個數字的時候:

舉個例子,假定陣列為,按照上述思路執行的步驟如下:

思路清楚了,完整的**如下:

//a代表陣列,length代表陣列長度

int findonenumber(int* a, int length)

else

}return candidate;

}

出現次數超過一半的數字

題目 陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。乙個陣列中有很多數,現在我們要找出其中那個出現次數超過總數一半的數字,怎麼找呢?大凡當我們碰到某乙個雜亂無序的東西時,我們人的內心本質期望是希望把它梳理成有序的。所以,我們得分兩種情況來討論,無序和有序。如果無序,那麼我們是不是可以...

陣列中出現次數超過一半的數字

何海濤 劍指offer 名企面試官精講典型程式設計題 九度oj 題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。輸入 每個測試案例包括2行 第一行輸入乙個整數n 1 n 100000 表...

陣列中出現次數超過一半的數字

陣列中出現次數超過一半的數字 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。class solution count 0 for auto i numbers if i k ...