找出陣列中元素出現次數超過陣列長度一半的元素
題目:陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為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陣列
- 統計陣列元素中每個元素出現的次數陣列
- 統計陣列中各數字(元素)出現的次數陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 陣列中出現次數超過一半的數字陣列
- 48 陣列中出現次數超過一半的數字陣列
- 找出陣列中只出現一次的數字陣列
- 陣列元素的數量陣列
- 統計陣列個元素出現的個數陣列
- 找出陣列中第 k 大的數字及其出現次數陣列
- JZ-028-陣列中出現次數超過一半的數字陣列
- 陣列filter方法對陣列元素進行過濾陣列Filter
- 陣列元素逆序陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- 每日一練(20):陣列中出現次數超過一半的數字陣列
- js 從目標陣列中過濾掉 一個陣列元素,JS陣列
- 返回陣列中的最大元素個數陣列
- 1.找出元素 item 在給定陣列 arr 中的位置陣列
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 旋轉陣列中的最小元素陣列
- java陣列元素的引用Java陣列
- 陣列元素劃分陣列
- golang 陣列去重 移除陣列指定元素Golang陣列
- 【陣列】1394. 找出陣列中的幸運數(簡單)陣列
- [劍指offer題解][Java]陣列中出現次數超過一半的數字Java陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- 找到兩個陣列中的公共元素陣列
- 【Java】尋找陣列中“主要元素”Java陣列
- js練習(一)找出元素item在給定陣列arr中的位置JS陣列
- 陣列的主元素查詢陣列
- 力扣 - 劍指 Offer 39. 陣列中出現次數超過一半的數字力扣陣列
- JavaScript陣列元素全排列JavaScript陣列
- JavaScript刪除陣列元素JavaScript陣列
- lc3041 修改陣列後最大化陣列中的連續元素數目陣列
- js常見演算法(一):陣列去重,打亂陣列,統計陣列各個元素出現的次數, 字串各個字元的出現次數,獲取地址連結的各個引數JS演算法陣列字串字元