尋找無序陣列中個數超過一半的那個數

2021-10-03 10:36:54 字數 1439 閱讀 6009

描述

陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。

輸入

第一行 陣列長度

第二行 陣列元素

輸出整數

例項輸入

5

1 2 3 4 4 4 4

例項輸出

解題思路

解法一:

排序,輸出陣列一半的值

public

static

void

main

(string[

] args)

arrays.

sort()

; system.out.

println

(arr[arr.length/2]

);}

解法二:

兩個數不同就消掉

static

intf

(int

arr)

if(val == arr[i]

)else

}return val;

}

解法三

利用快速排序到array.length/2

static

intf

(int

arr,

int begin,

int end,

int k)

else

if(q>k)

else}}

static

intp

(int

arr,

int begin,

int end)

else

if(arr[end]

>=arr[begin]

&& arr[end]

<=arr[indexmid]

)int t = arr[indexmid]

;arr[indexmid]

= arr[begin]

;arr[begin]

= t;

int poivt = arr[begin]

;int left = begin+1;

int right = end;

while

(left <= right)

int t = arr[begin]

;arr[begin]

= arr[right]

;arr[right]

= t;

return right

}

陣列中超過一半的數字

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。思路 定義乙個變數儲存當前元素,乙個計數器儲存次數,若次數等於0,則重新取字元。若次數大於零,遇到相同字元計數器 1,不同字元計...

求無序陣列中元素出現次數超過陣列長度一半的數字

求無序陣列中元素出現次數超過陣列長度一半的數字.首先給出幾個 元素出現次數超過陣列長度一半 測試陣列 a1 7 a2 5 a3 9 不難發現 陣列中如果乙個數字出現次數超過數字長度的一半.如果把這個陣列排序,那麼排序後的陣列中間的數字一定是出現次數超過數字長度的一半.如陣列a1長度為7,按從小到大排...

陣列中超過一半的數字 js

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。第一種是新建乙個空物件來儲存陣列中數字出現的次數 遍歷該,如果該數字出現過,則obj中以該數字為key的value加1 若該數字未...