劍指offer 陣列中出現次數超過一半的數

2021-08-10 07:38:28 字數 403 閱讀 5135

題目:

這個題目在以前考研時的王道書裡看到過。

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

思路:觀察陣列的性質,如果次數超過一半,那麼比其他所有元素出現的次數還要多,所以可以對每個數進行如下處理。首先假設第乙個數為這個解,然後設定次數為1

1)如果當前數和ans相同,則cnt++,

2)如果不同,那麼cnt--,

如果cnt=0 則設定當前數為這個解,因為最後的解出現的次數比其他所有次數還有多,所以最後乙個設定為解的就是最終的解,最後對這個解進行檢驗。

**:

class solution 

};

劍指offer 陣列在排序陣列中出現的次數

記錄次數,直接用data.count k 也通過了。或者常規演算法,出現有序用二分查詢。class solution def getnumberofk self,data,k write code here if len data 0 return 0 count 0 low 0 high len ...

劍指offer第39 陣列中出現次數超過一半的數字

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。coding utf 8 classsolution defmorethanhalfnum solution self numb...

劍指Offer 028陣列中出現次數超過一半的陣列

028陣列 現次數超過一半的陣列 題目 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0 方法 map統計法 思路 遍歷陣列,用map來記錄每個數出現的次數,最後再遍歷map查詢是...