1. 程式人生 > >練習題之陣列中出現次數超過一半的數字

練習題之陣列中出現次數超過一半的數字

題目:

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

程式碼實現:


/*
解題思路:
      1.先給陣列進行排序。
      2.因為要找出在陣列中出現次數超過陣列長度一半的數,那麼這個數一定在中間。
      3.取得中間數,然後統計次數
*/
import java.util.Arrays;
public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        int len=array.length;
        if(len<1)
        {
            return 0;
        }
        int count=0;
        //進行排序
        Arrays.sort(array);
        //取得中間數
        int num=array[len/2];
        for(int i=0;i<len;i++)
        {
            if(num==array[i])
            {
                count++;
            }
        }
        //看是否存在
        if(count<=(len/2))
        {
            num=0;
        }
        
        return num;
    }
}