找出陣列中元素出現次數超過陣列長度一半的元素
題目:陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
這道題有多種解法,下面主要說兩種。
- 常規方法:建立一個Map,遍歷陣列中的元素,如果元素不在map中出現過,將元素設定為key,value=1,如果元素在map中,就取出這個元素,並將對應的value值+1.最後遍歷map中的元素,如果有value>陣列長度的一半,就返回值
- 思維方法:先對陣列進行排序,如果有一個元素出現的次數超過了陣列長度的一半,那麼這個元素肯定是排序過後陣列的中間值。取出中間值和原來的陣列對比,如果相同count+1,最後判斷count大小是否大於一半。
function Solution(arr) {
var m = new Map()
arr.forEach(x => {
if(m.get(x)){
let num = m.get(x)+1
m.set(x,num)
}else{
m.set(x,1)
}
});
let mid = Math.floor(arr.length/2)
for(let [key,value] of m){
if(value>mid){
return key
}
}
return 0
}
function Solution(arr) {
let sortArr = arr.sort()
let count = 0;
let midNum = sortArr[Math.floor(sortArr.length/2)]
for(let i = 0;i<arr.length;i++){
if(arr[i]===midNum){
count++
}
}
return count > Math.floor(sortArr.length/2) ? midNum : 0
}
相關文章
- 陣列中每個陣列元素出現的次數陣列
- js找出陣列中出現最多的元素和次數JS陣列
- 統計陣列元素中每個元素出現的次數陣列
- 統計陣列中各元素出現次數陣列
- 統計陣列中各數字(元素)出現的次數陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 找出陣列中元素的位置陣列
- 陣列中出現次數超過一半的數字陣列
- 48 陣列中出現次數超過一半的數字陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- Single Number 陣列中除了某個元素出現一次,其他都出現兩次,找出這個元素陣列
- 找出陣列中只出現一次的數字陣列
- 在陣列中找出唯一的重複元素陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- 統計陣列個元素出現的個數陣列
- JZ-028-陣列中出現次數超過一半的數字陣列
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- js獲取陣列中元素出現的次數程式碼例項JS陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- 陣列filter方法對陣列元素進行過濾陣列Filter
- js 從目標陣列中過濾掉 一個陣列元素,JS陣列
- 1.找出元素 item 在給定陣列 arr 中的位置陣列
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- C語言 有一個整形陣列a,有10個元素,要求輸出陣列中的全部元素C語言陣列
- 旋轉陣列中的最小元素陣列
- 【陣列】1394. 找出陣列中的幸運數(簡單)陣列
- 陣列元素劃分陣列
- golang 陣列去重 移除陣列指定元素Golang陣列
- java陣列元素的引用Java陣列
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- js如何獲取指定陣列元素在陣列中的索引值JS陣列索引
- 如何將一個陣列中的元素插入另一個陣列陣列
- javascript過濾陣列中的元素簡單介紹JavaScript陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- 【Java】尋找陣列中“主要元素”Java陣列
- js如何將陣列中的元素清空JS陣列
- jQuery元素在陣列中的索引位置jQuery陣列索引