描述
陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。
輸入
第一行 陣列長度
第二行 陣列元素
輸出整數
例項輸入
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 若該數字未...