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

2021-09-23 21:58:14 字數 701 閱讀 2923

題目描述:

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

思路:

1.遍歷陣列,記錄陣列可能符合的值以及次數

2.初始時假設符合要求的值為array[0],次數為1,遍歷下乙個值時,若與arra[0]相同,則次數+1,否則次數-1

3.當次數減為0時,重置可能符合的值為當前位置的值,次數為1

4.最後驗證遍歷完陣列後可能符合條件的值裡記錄的值,若其出現次數超過陣列長度的一半,即為所求

實現:

public

class

solution

int result=array[0]

;//記錄可能符合的數

int time=1;

for(

int i=

1;i)else

else}}

time=0;

//驗證最後可能符合的數是否達到陣列長度的一半

for(

int i=

0;ireturn

(time > length/2)

? result :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查詢是...