1. 程式人生 > >劍指offer程式設計題(JAVA實現)——第28題:陣列中出現次數超過一半的數字

劍指offer程式設計題(JAVA實現)——第28題:陣列中出現次數超過一半的數字



github https://github.com/JasonZhangCauc/JZOffer
import java.util.Arrays;

/**
 * 
 * 劍指offer程式設計題(JAVA實現)——第28題:陣列中出現次數超過一半的數字
 * 
 * 題目描述
 * 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。
 * 例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。
 * 由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。
 * 如果不存在則輸出0。
 *
 */
public class Test28 { public static void main(String[] args) { int []array1 = null; MoreThanHalfNum_Solution(array1); int []array2 = {}; MoreThanHalfNum_Solution(array2); int []array3 = {1,2,3,4,5,6,7,8,9}; MoreThanHalfNum_Solution(array3); int []array4 = {4,4,4,4,4,4,4}; MoreThanHalfNum_Solution
(array4); int []array5 = {1,1,5,6,8,7,1,1}; MoreThanHalfNum_Solution(array5); } public static int MoreThanHalfNum_Solution(int[] array) { if(array==null||array.length==0) { return 0; } int length = array.length; int count = 0; Arrays.sort(array);//排序後較大的數必在中間 int num = array[
length / 2]; for (int i = 0; i < length; i++) { if (num == array[i]) count++; } if (count <= (length / 2)) {//出現次數不超過一半 num = 0; } return num; } }