滑動窗口應用: 成功組隊的數目 Count Number of Teams_Leetcode #1395

閱讀時間約 4 分鐘

題目敘述 Count Number of Teams

給定一個輸入陣列rating,裡面代表每位成員的評分

挑選三位成員,對應到三個index i, j, k 且 i < j < k

如果rating[i] < rating[j] < rating[k] ,則此三人可以組成一隊。

或者rating[i] > rating[j] > rating[k] ,則此三人也可以組成一隊。

請問成功組成三人小隊的方法數有多少?


測試範例

Example 1:

Input: rating = [2,5,3,4,1]
Output: 3
Explanation:
成功的組隊方式 (2,3,4), (5,4,1), (5,3,1).

Example 2:

Input: rating = [2,1,3]
Output: 0
Explanation:
無解 無法找到 評分遞減或評分遞增的三人組隊方式​

Example 3:

Input: rating = [1,2,3,4]
Output: 4
成功的組隊方式 (1,2,3), (1,2,4), (1,3,4), (2,3,4).

演算法 滑動窗口 + 統計左側右側資訊


假想中央那名成員為在index j 的位置,
統計左方rating 比較小 和 右方rating比較大的成員數量。

如次一來,
遞增排列組隊方法數 = 左方rating比較小的成員數量 * 右方rating比較大的成員數量

遞減排列組隊方法數 = 左方rating比較大的成員數量 * 右方rating比較小的成員數量


最後,用一個for loop,把index j 從頭到尾掃描一遍,累加所有合法的組隊方式即可。


示意圖 滑動窗口 + 統計左側右側資訊

raw-image

程式碼 滑動窗口 + 統計左側右側資訊

class Solution:
def numTeams(self, rating: List[int]) -> int:
r, size = rating, len( rating )

# compute statistics of sliding range
left_smaller = [ sum( r[i] < r[j] for i in range(0,j) ) for j in range(size) ]
right_bigger = [ sum( r[j] < r[k] for k in range(j+1, size) ) for j in range(size)]

num_of_teams = 0

# j slides from 0 to ( n-1 ), and j stands for the index of middle element
for j in range( 0, size):

num_of_ascending_team = left_smaller[j] * right_bigger[j]
num_of_descending_team = ( j - left_smaller[j] ) * ( size-1 - j - right_bigger[j] )

num_of_teams += ( num_of_ascending_team + num_of_descending_team )

return num_of_teams


複雜度分析

時間複雜度: O(n^2)

預先統計左右兩次資訊,雙層迴圈耗費O(n^2)

累加組隊數量,單層迴圈耗費O(n)


空間複雜度: O(n)

預先統計左右兩次資訊,需要額外的O(n)空間


Reference

[1] Count Number of Teams - LeetCode

avatar-img
88會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
題目敘述 Sort the Jumbled Numbers 給定兩個輸入陣列 第一個是映射表,提供0~9 mapping到新數字的映射關係。 第二個陣列是原始數值。 請重新排序原始數值,排序依據是根據映射表對應之後的新數值的大小決定。 如果對應之後的新數值大小相同,則由原本的前後相對順序決定。
題目敘述 Sort Array by Increasing Frequency Leetcode #1636 給定一個輸入陣列,請依照出現頻率的多寡從低頻到高頻排列陣列元素。 如果有兩個元素的出現頻率相同,依照元素大小從大到小排列。 測試範例 Example 1: Input: nums
給定兩個輸入陣列,第一個陣列代表每個人的姓名,第二個陣列代表每個人的身高。依照身高從高到矮進行排列,輸出每個人的名字。本文介紹了一個根據身高排列人名的算法,並提供了相關的程式碼和時間複雜度分析。
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
題目敘述: Minimum Cost to Convert String I 給定字元轉換映射表original, changes和對硬的成本陣列cost。 請問字串source轉換到字串destination的最小成本是多少? 如果無解,請返回-1 如果有解,請返回整體的轉換最小成本。
題目敘述 Sort the Jumbled Numbers 給定兩個輸入陣列 第一個是映射表,提供0~9 mapping到新數字的映射關係。 第二個陣列是原始數值。 請重新排序原始數值,排序依據是根據映射表對應之後的新數值的大小決定。 如果對應之後的新數值大小相同,則由原本的前後相對順序決定。
題目敘述 Sort Array by Increasing Frequency Leetcode #1636 給定一個輸入陣列,請依照出現頻率的多寡從低頻到高頻排列陣列元素。 如果有兩個元素的出現頻率相同,依照元素大小從大到小排列。 測試範例 Example 1: Input: nums
給定兩個輸入陣列,第一個陣列代表每個人的姓名,第二個陣列代表每個人的身高。依照身高從高到矮進行排列,輸出每個人的名字。本文介紹了一個根據身高排列人名的算法,並提供了相關的程式碼和時間複雜度分析。
給定一個輸入陣列,每一個tuple代表節點之間了從屬關係。 請從從屬關係重建整顆二元樹,並且返回整顆二元樹的根結點。
給定一個陣列,分別代表每位顧客的抵達時間和廚師準備時間。請問平均的等待時間是多少? 等待時間定義為客人開始真正用餐的時間 - 客人抵達的時間。演算法為計算廚師的出餐時間。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
The Hidden Hooks: How Social Media Keeps You Scrolling Social media platforms are designed to be addictive, employing various psychological tricks to
Thumbnail
收到這本書也快要一年哩,斷斷續續地緩慢閱讀中,但一個不小心就被擱在旁好長一段時間。前陣子不知道怎麼地忽然在Podcast聽到這本書,於是我就又拿起來讀,同時,和它一起發呆的《哈佛 ✕ Google行為科學家的脫單指南》也被我一並給消化掉了。
Thumbnail
今天的客戶尋找到台灣好椅,想請師傅們幫忙更換椅輪,客戶說想將普通輪更換為固定腳,固定腳的設計就是讓椅子無法滑動,只能將椅子抬起來移動,雖然較不便利,但很適合老人、小孩、家裡養寵物的朋友們,可以在乘坐時更安全,是一種很安全實用的設計,台灣好椅賣椅子時,也有客戶請我們直接把輪子更換成固定腳。
Thumbnail
這本書教你與他人建立有意義的情感連結, 邁向嶄新的人生。 作者是心理學博士, 她用交友軟體和一百個男人約會後, 結合心理學理論與約會實戰, 寫成此書。 我正在同時閱讀的“人脈複利”提到一個概念, 這本書也有相似的觀點。 就是感情關係正向的人身體比較健康, 也較長壽。 人脈好的人身心都會較健康。 An
Thumbnail
你好,這裡是股市鴿~ 華德動能(2237) 今天我想要介紹一家台灣的電動巴士廠華德動能(2237),它是一家在電動商用車領域有自主設計開發能力的公司,也是國內電動巴士市場佔有率超過50%的領導廠商。 電動巴士政策 華德動能受益於政府補助政策,今年電巴出貨加速,28日將交給大南客運示範型三期電巴48輛
Thumbnail
我想不少人有跟我有相同的困擾,長期盯著螢幕,稍微疲憊一些,隔天睡醒容易短暫出現會移動的小黑點。雖然到了眼科檢查,醫生說不影響視力,定期追蹤就好,但還是會讓人心生擔憂,想要好好日常做保健。
Thumbnail
如果你看過醫生或做過一些互聯網研究,在尋找脊椎疼痛的原因及椎間盤突出治療時,你無疑會遇到“神經受壓”、 “椎間盤突出”和“椎間盤滑動”等術語。這些術語在許多文章和討論中經常互換使用,但它們是什麼意思?有什麼不同?你怎麼知道是哪一個給你帶來了痛苦? 有椎間盤突出還是椎間盤滑動?
Thumbnail
  在尋常人眼裡看來,疾馳而過的霄天簡直跟一陣風沒兩樣,路上兩、三人即便是精明著四處鎖定客人的商家等霄天擦身過後,也只覺晚風微涼,神奇的是比起城門那時不過一時半刻速度似乎又更快了一些,霄天打算穿過比平常還多人的街道早點回去。  "呃!"突然被石子絆到的南宮曉雪,走在她身後的南宮若月注意到時伸手去拉已
Thumbnail
可應用在 AP 元素(DIV)內的影像水平滑動切換,搭配巢狀 AP 元素(DIV)與內嵌式頁框,媲美 Animate 互動瀏覽影像效果。 A.加入 AP DIV 於頁面上 在 Dreamweaver 中,要加入 AP  DIV 除了設定 CSS 外,更簡單的方式是使用繪製 AP  DIV 工具,
Thumbnail
大概一個月前,就在facebook上看到這個活動的訊息, 那時對於活動的核心人物並不認識,只是覺得倒立很酷,應該會很有趣, 所以就打算來參加! 進到展區,看到更多關於活動發起人-黃明正的許多事蹟,除了讚嘆環島記錄中的照片美, 對倒立先生所抱持著夢想與理念,也是相當推崇,字裡行間也擁有鼓舞人心的力量
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
The Hidden Hooks: How Social Media Keeps You Scrolling Social media platforms are designed to be addictive, employing various psychological tricks to
Thumbnail
收到這本書也快要一年哩,斷斷續續地緩慢閱讀中,但一個不小心就被擱在旁好長一段時間。前陣子不知道怎麼地忽然在Podcast聽到這本書,於是我就又拿起來讀,同時,和它一起發呆的《哈佛 ✕ Google行為科學家的脫單指南》也被我一並給消化掉了。
Thumbnail
今天的客戶尋找到台灣好椅,想請師傅們幫忙更換椅輪,客戶說想將普通輪更換為固定腳,固定腳的設計就是讓椅子無法滑動,只能將椅子抬起來移動,雖然較不便利,但很適合老人、小孩、家裡養寵物的朋友們,可以在乘坐時更安全,是一種很安全實用的設計,台灣好椅賣椅子時,也有客戶請我們直接把輪子更換成固定腳。
Thumbnail
這本書教你與他人建立有意義的情感連結, 邁向嶄新的人生。 作者是心理學博士, 她用交友軟體和一百個男人約會後, 結合心理學理論與約會實戰, 寫成此書。 我正在同時閱讀的“人脈複利”提到一個概念, 這本書也有相似的觀點。 就是感情關係正向的人身體比較健康, 也較長壽。 人脈好的人身心都會較健康。 An
Thumbnail
你好,這裡是股市鴿~ 華德動能(2237) 今天我想要介紹一家台灣的電動巴士廠華德動能(2237),它是一家在電動商用車領域有自主設計開發能力的公司,也是國內電動巴士市場佔有率超過50%的領導廠商。 電動巴士政策 華德動能受益於政府補助政策,今年電巴出貨加速,28日將交給大南客運示範型三期電巴48輛
Thumbnail
我想不少人有跟我有相同的困擾,長期盯著螢幕,稍微疲憊一些,隔天睡醒容易短暫出現會移動的小黑點。雖然到了眼科檢查,醫生說不影響視力,定期追蹤就好,但還是會讓人心生擔憂,想要好好日常做保健。
Thumbnail
如果你看過醫生或做過一些互聯網研究,在尋找脊椎疼痛的原因及椎間盤突出治療時,你無疑會遇到“神經受壓”、 “椎間盤突出”和“椎間盤滑動”等術語。這些術語在許多文章和討論中經常互換使用,但它們是什麼意思?有什麼不同?你怎麼知道是哪一個給你帶來了痛苦? 有椎間盤突出還是椎間盤滑動?
Thumbnail
  在尋常人眼裡看來,疾馳而過的霄天簡直跟一陣風沒兩樣,路上兩、三人即便是精明著四處鎖定客人的商家等霄天擦身過後,也只覺晚風微涼,神奇的是比起城門那時不過一時半刻速度似乎又更快了一些,霄天打算穿過比平常還多人的街道早點回去。  "呃!"突然被石子絆到的南宮曉雪,走在她身後的南宮若月注意到時伸手去拉已
Thumbnail
可應用在 AP 元素(DIV)內的影像水平滑動切換,搭配巢狀 AP 元素(DIV)與內嵌式頁框,媲美 Animate 互動瀏覽影像效果。 A.加入 AP DIV 於頁面上 在 Dreamweaver 中,要加入 AP  DIV 除了設定 CSS 外,更簡單的方式是使用繪製 AP  DIV 工具,
Thumbnail
大概一個月前,就在facebook上看到這個活動的訊息, 那時對於活動的核心人物並不認識,只是覺得倒立很酷,應該會很有趣, 所以就打算來參加! 進到展區,看到更多關於活動發起人-黃明正的許多事蹟,除了讚嘆環島記錄中的照片美, 對倒立先生所抱持著夢想與理念,也是相當推崇,字裡行間也擁有鼓舞人心的力量