基本陣列題 統計最多出現次數的偶數 Leetcode #2404 Most Frequent Even Element

閱讀時間約 3 分鐘
raw-image

這題的題目在這裡:

題目敘述

題目會給定我們一個陣列,要求我們找出裡面統計最多出現次數的偶數

假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。


測試範例

Example 1:

Input: nums = [0,1,2,2,4,4,1]
Output: 2
Explanation:
The even elements are 0, 2, and 4. Of these, 2 and 4 appear the most.
We return the smallest one, which is 2.
2出現兩次
4出現兩次
2比4小,選2 (平手時的規則)

Example 2:

Input: nums = [4,4,4,9,2,4]
Output: 4
Explanation: 4 is the even element appears the most.
4出現4
2出現1

Example 3:

Input: nums = [29,47,21,41,13,37,25,7]
Output: -1
Explanation: There is no even element.
沒有偶數​

約束條件

Constraints:

  • 1 <= nums.length <= 2000
  • 0 <= nums[i] <= 105

演算法

先過濾掉奇數部分,只留下偶數。

再用字典統計出現次數,次數最多的偶數留下來。

假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。


程式碼

class Solution:
 def mostFrequentEven(self, nums: List[int]) -> int:
  target = -1
  frequency = Counter()
  
  for number in nums:

   # skip odd numbers
   if number % 2: continue

   frequency[number] += 1
   
   # update even element with largest frequency
   if frequency[number] > frequency[target] or frequency[number] == frequency[target] and number < target:
    target = number

  return target

複雜度分析

時間複雜度:

O( n ) 從左到右,每個數字複掃描一次。

空間複雜度:

O( n ) 建立了一個字典,最大可能的佔用空間和陣列長度一樣長O(n)


關鍵知識點

計數類Counting的應用題,想到比較適合的對應底層支持資料結構是字典、雜湊映射表(dictionary, hash map)


Reference:

[1] LeetCode - The World's Leading Online Programming Learning Platform

84會員
421內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
題目給定一個已排序的輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目給定一個輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目會給定兩個參數,一個是底數x,一個是次方n。要求我們計算出x^n。 要求實作myPow(self, x: float, n: int) -> float 函數的內部邏輯。 也就是說,不可以呼叫程式語言內建計算指數的library
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
題目給定一個已排序的輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目給定一個輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目會給定兩個參數,一個是底數x,一個是次方n。要求我們計算出x^n。 要求實作myPow(self, x: float, n: int) -> float 函數的內部邏輯。 也就是說,不可以呼叫程式語言內建計算指數的library
1. 競賽題 或者 面試題 Medium Hard 以上題目,一開始在第一時間想不出解題思路,或者最佳解是很平常的事情。 通過官方解答、討論區的高手分享解題,進而學到新的解題思路,或者更泛用的演算法框架,就是最大的收穫。 2. 但是Easy分類的題目,通常就是該領域最基礎的題目,應該要
你可能也想看
Google News 追蹤
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
人對於死亡和疾病的恐懼幾乎已經是植根在心底裡,生病了就要看醫生早就成為「常理」,寧願依靠藥物卻不反省自己的抵抗力為何薄弱等,總總問題其實也只是人性遊戲的一部分而已。但既然是人性,那亦就沒有「對錯」可言,到頭來就只有「靈砂紀錄」。
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
因為要讓所有出生在世上的人們站在公平的機會點上,唯一的一個方法,我們無法在道德上祈求富有的人們都能夠無私救濟窮苦,分享他們的財富,也無法讓所有的人都生在富有的家庭,無法讓所有人都成為聖人有高尚的道德,讓貧窮自己消失,只能夠透過一種公平制度來達到此一目標。
Thumbnail
世界上大部分讓人感到可怕的事,都是來自於未知,而所謂的「未知」,一般都是來自於肉眼看不到的事物,例如靈砂紀錄中的前世故事。有人說,人根本無法改變過去,那為什麼要知道過去──更甚是根本無法證實是否發生過的事情?
Thumbnail
說到摩托車的轉向,大部分人想到的就是要傾斜,然後車子壓得越低、過彎速度越快 在基本訓練中,操作的核心最終目的就是要讓摩托車自體轉向,而摩托車轉向的動踏大體上包含了舵角跟傾角,這兩者其實在摩托車的機械設計上就是讓摩托車自動產生,所以基本訓練中的三大核心是加速動作、減速動作跟傾倒時機
Thumbnail
當然若要充分發揮車子的性能還是必須經過調校跟適應才能更加提高對車子下達指令的強度,但要怎麼從繞錐的操作轉移到具體應用上呢? 當然實際日常駕駛的應用上,畢竟騎乘強度沒那麼高,動作做得細微就可以收到效果,但訓練是為了要讓你養成這樣的操作反應,在突如其來的強力操作時能自然反應出來化解危機
Thumbnail
許多事,不管好事、壞事,都是一連串的機運、巧合接續才有最後的結果,但我們通常沒有那個時間與心力細究,只想快速找出一個說法。這樣的大腦結構在演化上有意義,一來這是一個快速理解世界的方法,我們的大腦需要一個又一個「故事」來打造世界觀;二來認真思考很傷大腦資源、我們需要比較省力的思考模式。
Thumbnail
或許神秘學就活在了日常當中,只是被人們習慣了,沒有被發現。事實上,我曾經有一名客戶對於「性愛」有恐懼,解讀碎片後發現她在進行性行為時,因為潛意識憶起被強暴的記憶,導致在現實中進行性行為時會有驚恐的感覺,亦即「觸碎」──觸動了靈魂碎片。而要解決這些問題,就需要解讀靈砂紀錄,即由靈魂碎片組成的紀錄。
Thumbnail
陣形不是拉的越長,攻擊面越大就越有優勢,越短不見得較差,反過來說沒有參加作戰的人多,前後排交換得宜的話可以保留體力。總之,一切要看當時的環境,軍隊的訓練度,以及臨場反應配合,沒有標準答案。
Thumbnail
這次的主題是要探討當我們進入股票交易市場時,你的信念是什麼?
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
人對於死亡和疾病的恐懼幾乎已經是植根在心底裡,生病了就要看醫生早就成為「常理」,寧願依靠藥物卻不反省自己的抵抗力為何薄弱等,總總問題其實也只是人性遊戲的一部分而已。但既然是人性,那亦就沒有「對錯」可言,到頭來就只有「靈砂紀錄」。
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
因為要讓所有出生在世上的人們站在公平的機會點上,唯一的一個方法,我們無法在道德上祈求富有的人們都能夠無私救濟窮苦,分享他們的財富,也無法讓所有的人都生在富有的家庭,無法讓所有人都成為聖人有高尚的道德,讓貧窮自己消失,只能夠透過一種公平制度來達到此一目標。
Thumbnail
世界上大部分讓人感到可怕的事,都是來自於未知,而所謂的「未知」,一般都是來自於肉眼看不到的事物,例如靈砂紀錄中的前世故事。有人說,人根本無法改變過去,那為什麼要知道過去──更甚是根本無法證實是否發生過的事情?
Thumbnail
說到摩托車的轉向,大部分人想到的就是要傾斜,然後車子壓得越低、過彎速度越快 在基本訓練中,操作的核心最終目的就是要讓摩托車自體轉向,而摩托車轉向的動踏大體上包含了舵角跟傾角,這兩者其實在摩托車的機械設計上就是讓摩托車自動產生,所以基本訓練中的三大核心是加速動作、減速動作跟傾倒時機
Thumbnail
當然若要充分發揮車子的性能還是必須經過調校跟適應才能更加提高對車子下達指令的強度,但要怎麼從繞錐的操作轉移到具體應用上呢? 當然實際日常駕駛的應用上,畢竟騎乘強度沒那麼高,動作做得細微就可以收到效果,但訓練是為了要讓你養成這樣的操作反應,在突如其來的強力操作時能自然反應出來化解危機
Thumbnail
許多事,不管好事、壞事,都是一連串的機運、巧合接續才有最後的結果,但我們通常沒有那個時間與心力細究,只想快速找出一個說法。這樣的大腦結構在演化上有意義,一來這是一個快速理解世界的方法,我們的大腦需要一個又一個「故事」來打造世界觀;二來認真思考很傷大腦資源、我們需要比較省力的思考模式。
Thumbnail
或許神秘學就活在了日常當中,只是被人們習慣了,沒有被發現。事實上,我曾經有一名客戶對於「性愛」有恐懼,解讀碎片後發現她在進行性行為時,因為潛意識憶起被強暴的記憶,導致在現實中進行性行為時會有驚恐的感覺,亦即「觸碎」──觸動了靈魂碎片。而要解決這些問題,就需要解讀靈砂紀錄,即由靈魂碎片組成的紀錄。
Thumbnail
陣形不是拉的越長,攻擊面越大就越有優勢,越短不見得較差,反過來說沒有參加作戰的人多,前後排交換得宜的話可以保留體力。總之,一切要看當時的環境,軍隊的訓練度,以及臨場反應配合,沒有標準答案。
Thumbnail
這次的主題是要探討當我們進入股票交易市場時,你的信念是什麼?