leetcode筆記 1 17 摩爾投票,

2021-10-16 08:37:10 字數 724 閱讀 7490

陣列中佔比超過一半的元素稱之為主要元素。給定乙個整數陣列,找到它的主要元素。若沒有,返回-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、兩個數不同,同時消去,兩個數相同則保留,最後剩下的乙個或者多個值,便是眾數。但前提的一定存在眾數。

2、由於題目沒有給出一定存在眾數,例如1,2,3 進行一次摩爾投票消去剩下元素3 ,顯然是不對的。因此需要驗證得到的答案是否為眾數。

class

solution

else

if(nums[i]

!=n)

else

}//驗證n中存放的值是不是眾數

int count2 =0;

for(

int i : nums)

if(count2>nums.length/2)

else

}}

leetcode練習03 摩爾投票法

摩爾投票法適用於找出陣列中某個元素出現超過1 n n 1且n 0 次。借助leetcode的第169道題練習摩爾投票法 class solution int count 0 元素出現次數 int tempnum nums 0 當前元素 for int i 0 i nums.length i retu...

摩爾投票法 學習筆記

參考資料 絕對眾數 在序列出現次數 n 2 left lfloor dfrac n 2 right rfloor 2 n 的數。採用兩兩抵消的思想。因為其它所有數出現加起來都不如絕對眾數多,所以兩兩抵消後,只有最後剩下的可能是區間眾數。時間複雜度 o n o n o n 空間複雜度 o 1 o 1 ...

leetcode刷題,總結,記錄,備忘 117

leetcode117 follow up for problem populating next right pointers in each node what if the given tree could be any binary tree?would your previous solu...