數量正好佔是陣列長度一半的數(尋找發帖水王)

2021-10-02 14:38:07 字數 567 閱讀 9926

題:尋找發帖水王,出現次數恰好為個數的一半,求出這個數

/*

* 水王佔總數的一半,說明總數為偶數

* 水王不失一般性,假設隔乙個數就是水王的id,兩兩不同最後一定會消減為0

* 水王可能是最後乙個元素,每次掃瞄的時候,多乙個動作,與最後乙個元素進行比較,單獨計數,若恰好為數量的一半,則為水王

* 如果不是,計數不足一半,那麼去掉最後乙個元素,水王就是candidate

*///不同的數進行消除

public

static

intsolve

(int

arr)

//遇到與候選值相同的,次數加1

if(arr[i]

== candidate)

ntimes++

;else

ntimes--;}

if(countoflast == arr.length/2)

return arr[arr.length-1]

;else

return candidate;

}

出現次數超過陣列長度一半的數字

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列,由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。hashmap 法 此法思路簡單,可以使用hashmap 記錄當前的數字和他出現的次數 但是重點在於 遍歷整個map,找到符合條件的值 2。消去法 既...

求陣列中出現次數大於陣列長度一半元素

最近聽參加今年研究生考試的同學說了這樣一道演算法題 已知乙個整數陣列,讓你判斷其中是否存在出現次數大於陣列長度一半的元素,如果存在的話輸出其中第一次出現該元素時陣列的下標 如果不存在的話,輸出 1。這讓我想到了在 程式設計之美 上看到的乙個幾乎類似的題目 尋找發帖的 水王 只不過 程式設計之美 上的...

找陣列中重複次數超過陣列長度一半的元素

找陣列中重複次數超過陣列長度一半的元素 進行標號的遍歷陣列,因為某個元素超過一半,儲存陣列中的數字和其出現次數 如果下乙個相同則次數加1,不同減1,如果次數變為0則儲存數字為下乙個數,最終情況是出現次數最多的元素 最終儲存下來,然後檢查是否超過半數。1 package cn.com.zfc.exam...