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

2021-09-24 13:59:57 字數 689 閱讀 8289

時間限制:1秒 空間限制:32768k

本題知識點: 陣列

題目描述

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

/*

*思路一:

* 時間複雜度為o(n*log n)

*排序,獲取中間位置的數字(如果數量大於一半,那麼中間位置數字必定是最多的),進行一次遍歷進行驗證

**思路二:

*時間複雜度為o(n)

*使用變數記錄當前值,對陣列進行遍歷比較

*將相等時,計數器++,不相等時,計數器--,如果數量大於一半,那麼留下來的數字必定是最多的

*進行一次遍歷驗證

*/

**:

c++:

思路二:

class solution 

if(cur != numbers[i])

cnt--;

else

cnt++;

}cnt = 0;

for(int i = 0; i < numbers.size(); i++)

return cnt > numbers.size() / 2 ? cur : 0;

}};

劍指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查詢是...