摩爾投票解決主要元素問題

2021-10-09 13:46:30 字數 621 閱讀 9464

陣列中佔比超過一半的元素稱之為主要元素。給定乙個整數陣列,找到它的主要元素。若沒有,返回-1。

示例 1:

輸入:[1,2,5,9,5,9,5,5,5]

輸出:5

示例 2:

輸入:[3,2]

輸出:-1

示例 3:

輸入:[2,2,1,1,1,2,2]

輸出:2

說明:你有辦法在時間複雜度為 o(n),空間複雜度為 o(1) 內完成嗎?

1.設定計數器cnt為0 初始元素major為陣列第乙個元素

2.遍歷陣列 當cnt為0時候 將當前推選元素賦值給major 並且+1 如果不為0 判斷當前元素是否等於major如果等於cnt+1 否則-1

3.遍歷完成之後 最多元素對應的計數器》0 遍歷陣列算出陣列中等於major的元素個數

4.個數跟陣列的長度一半作比較

public

class

solution

else

else}}

if(cnt>0)

}if(total>nums.length/2)

else

}return-1

;}}

Leetcode169 多數元素 摩爾投票

leetcode上有如下的題 169.多數元素 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 輸入 2,2,1,1,1,2,2 輸出 2 乍一看的時候,直接想用hashmap來做,鍵是元素...

主元素問題

主元素 majority number 定義為陣列中出現次數嚴格超過一半的數。找到這個數。要求使用o 1 的額外空間和o n 的時間。初階 有n個數,其中乙個數的出現次數嚴格超過了一半。求這個數。高階1 有n個數,其中兩個數的出現次數都超過了 求這兩個數。高階2 有n個數,其中乙個數的出現次數嚴格超...

主元素問題

設a是含有n個元素的陣列,如果元素x在a中出現的次數大於n 2,則稱x是a的主元素。給出乙個演算法,判斷a中是否存在主元素。因為主元素的個數大於n 2,如果兩個不同的元素兩兩抵消,最後若完全抵消,那麼就不存在主元素 若沒有完全抵消,那麼餘下的元素可能就是主元素,因此統計該元素的出現次數,即可判定是否...