leetCode 169 多數元素

2021-10-04 19:05:35 字數 1097 閱讀 5660

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列**現次數大於

你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。

示例 1:

輸入: [3,2,3]

輸出: 3

示例 2:

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

輸出: 2

1、使用雜湊對映(hashmap)來儲存每個元素以及出現的次數。對於雜湊對映中的每個鍵值對,鍵表示乙個元素,值表示該元素出現的次數,迴圈遍歷陣列 nums 並將陣列中的每個元素及對應的個數加入雜湊對映中;

2、然後遍歷雜湊對映中的所有鍵值對,找出值大於 ⌊ n/2 ⌋ 的健,也就是陣列對應的元素。

class solution 

for (int i : nums)

}return -1;}}

如果將陣列 nums 中的所有元素按照單調遞增或單調遞減的順序排序,那麼下標為所以,我們先將 nums 陣列排序,然後返回下標

class solution 

}

摩爾投票演算法思想:每次從序列裡選擇兩個不相同的數字刪除掉(或稱為「抵消」),最後剩下乙個數字或幾個相同的數字,就是出現次數大於總數一半的那個。

基於上面的演算法思想,遍歷投票陣列,將當前票數最多的候選人與其獲得的(抵消後)票數分別儲存在 candiate與 count 中。

若 count == 0,代表當前 candiate空缺,直接將當前候選人賦值給 candiate,並令 count++;

若 count != 0,代表當前 candiate的票數未被完全抵消,因此令 count--,即使用當前候選人的票數抵消 candiate的票數;

class solution 

if(i == candiate)else

}return candiate;}}

LeetCode 169 多數元素

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 思路一 既然是多數且超過n 2,那麼排序之後,這些數中間...

LeetCode 169 多數元素

題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。法 1 直接遍歷 時間複雜度 o n 2 空間複雜度 o 1 public intmajorityelement1 int nums if...

leetcode169 多數元素

用乙個變數和計數器輔助,變數存放當前元素的值a,計數器統計當前元素出現次數n 如果遇到的元素和a不一樣,則n減一,如果n為零,則把a替換成遇到的元素,b設為1 最後的a即為要求的多數元素 class solution count candidate num 1 1 return candidate ...