這個問題已經在鏈接中討論過了。 Find the majority element in array使用BST的多數元素
我知道有更優化的soln比這個,但我不明白下面討論的方法。順便說一句,這是一個未分類的數組。
二叉搜索樹(在此方法中使用)的節點如下。
struct tree
{
int element;
int count;
}BST;
「由一個插入在BST一個元素,並且如果元素是已經存在,則遞增節點的計數。」在任何階段中,如果一個節點的計數變爲大於N/2,則返回。 該方法適用於在數組起始處出現n/2 + 1個多數元素(例如{1,1,1,1,1,2,3,4})的情況。
如果我們將元素一個接一個地傳遞給一個函數,那麼我們如何比較一個元素是否已經存在並增加計數?
每次調用函數時,都在修改對象。因此,每次電話會議都會改變全球的狀態。 –
這個結構看起來很無用。樹是由一個元素和一個「數」組成的東西,而沒有其他的東西? – molbdnilo
嘿。我知道這是一個相當古老的問題。我試着對我的答案做出非常準確的判斷。我的回答沒有幫助你嗎?如果有些事情還不清楚,你可以發表評論,我會根據需要編輯我的答案。 – dingalapadum