計數應用: 資深公民的數量 Number of Senior Citizens_Leetcode #2678

更新於 發佈於 閱讀時間約 3 分鐘

題目敘述 Number of Senior Citizens


給定一個旅客的車票字串陣列,每個字串的最後第四個和第三個數字代表旅客的年齡。

例如: XXX...XXX2015 代表旅客年齡為20歲。

請計算總共有多少位乘客的年齡 > 60 歲?


測試範例

Example 1:

Input: details = ["7868190130M7522","5303914400F9211","9273338290F4010"]
Output: 2
Explanation: The passengers at indices 0, 1, and 2 have ages 75, 92, and 40. Thus, there are 2 people who are over 60 years old.

Example 2:

Input: details = ["1313579440F2036","2921522980M5644"]
Output: 0
Explanation: None of the passengers are older than 60.

約束條件

Constraints:

  • 1 <= details.length <= 100

輸入陣列長度介於1~100之間。

  • details[i].length == 15

每個旅客字串長度為15

  • details[i] consists of digits from '0' to '9'.

旅客字串裡面的數字一定在0~9的範圍內

  • details[i][10] is either 'M' or 'F' or 'O'.

第11碼代表性別

  • The phone numbers and seat numbers of the passengers are distinct.

每位旅客的電話號碼和座號保證都相異


演算法 生成式 + 計數


根據題意,擷取年齡所在的字串位置,轉成數字,統計有多少位旅客 > 60歲。

Python生成式的教學請參考這篇文章


程式碼 生成式 + 計數

class Solution:

    def countSeniors(self, details: List[str]) -> int:
       

        return sum( ( 1  for d in details if int(d[-4:-2]) > 60 ) )

複雜度分析

時間複雜度:O(n)

線性掃描每一筆旅客資料,所需時間為O(n)


空間複雜度: O(1)

所用到的都是固定尺寸的臨時變數,所需空間為O(1),常數級別。


Reference

[1] Number of Senior Citizens - LeetCode

avatar-img
92會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目要求計算兩個二進位字串的相加,並以字串的形式輸出。 字串內容只包含'0'或'1'字元。 複雜度分析 時間複雜度為O(m+n),空間複雜度為O(m+n)。
給定木板的長度和切割點位置,找到最小總切割成本。透過DP動態規劃和區間DP框架,定義DP狀態並推導出最小切割成本的遞迴關係式。複雜度分析為時間複雜度O(n^3)和空間複雜度O(n^2)。關鍵知識點在於挖掘切割問條的共通模式,透過範例和圖解輔助思考。
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
題目敘述 Minimum Deletions to Make String Balanced 給定一個只會有包含'a'b或'b'的輸入字串s。 每次操作可以任選一個字元刪除。 請問最少需要多少次操作,才會使得所有的'b'都在'a'後面? 測試範例 Example 1: Input: s
題目敘述: Reverse Bits 給定一個32bit的整數,請逆序翻轉其二進位表達式,輸出翻轉過後的數字。 例如輸入是二進位1010111 逆序翻轉後是 1110101,對應的十進位數值是117 測試範例 Example 1: Input: n = 00000010100101000
題目敘述 Count Number of Teams 給定一個輸入陣列rating,裡面代表每位成員的評分 挑選三位成員,對應到三個index i, j, k 且 i < j < k 如果rating[i] < rating[j] < rating[k] ,則此三人可以組成一隊。 或者ra
題目要求計算兩個二進位字串的相加,並以字串的形式輸出。 字串內容只包含'0'或'1'字元。 複雜度分析 時間複雜度為O(m+n),空間複雜度為O(m+n)。
給定木板的長度和切割點位置,找到最小總切割成本。透過DP動態規劃和區間DP框架,定義DP狀態並推導出最小切割成本的遞迴關係式。複雜度分析為時間複雜度O(n^3)和空間複雜度O(n^2)。關鍵知識點在於挖掘切割問條的共通模式,透過範例和圖解輔助思考。
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
題目敘述 Minimum Deletions to Make String Balanced 給定一個只會有包含'a'b或'b'的輸入字串s。 每次操作可以任選一個字元刪除。 請問最少需要多少次操作,才會使得所有的'b'都在'a'後面? 測試範例 Example 1: Input: s
題目敘述: Reverse Bits 給定一個32bit的整數,請逆序翻轉其二進位表達式,輸出翻轉過後的數字。 例如輸入是二進位1010111 逆序翻轉後是 1110101,對應的十進位數值是117 測試範例 Example 1: Input: n = 00000010100101000
題目敘述 Count Number of Teams 給定一個輸入陣列rating,裡面代表每位成員的評分 挑選三位成員,對應到三個index i, j, k 且 i < j < k 如果rating[i] < rating[j] < rating[k] ,則此三人可以組成一隊。 或者ra
你可能也想看
Google News 追蹤
Thumbnail
大概在20多年前吧,那時還是大學生,也有一次印象深刻的搭車經驗。
廣義的來說,六十五歲以上即邁入高齡。65 至 74 歲稱為 early elderly,75歲以上則為 late elderly。 根據世界衛生組織WHO的調查,2010年時全世界約有 5 億兩千四百萬的人口為六十五歲以上,這佔了全世界總人口的約8%。 這個數據預估會於 2050 年快速的成長三
Thumbnail
人生70才開始,越活越年輕的時代來臨。台灣將在2025年進入超高齡化社會,也就是五人之中就有一位超過65歲,老年生活如何精彩度過和保持身心靈的健康,是面對超高齡化社會來臨的重要課題。失去活動力,即缺乏運動和長時間久坐,是影響年長者慢性疾病和失能發生的重要原因。完善的生活空間,對於年長者的活動力具
Thumbnail
週日的早上,因參加雲林大埤采風的走讀課程,第一次搭高鐵到雲林。上車找到自己靠窗座位時,三人座的中間已坐著一位優雅的年長女士。對她點頭示意後,跨過她的手提行李箱入座。旋即功夫,她的左手邊座位已由另一位女士就位。 閉目養神中,聽到她們開始交談。左邊女士問及年長女士貴庚?答曰:82歲。聽後當然不免俗地,
Thumbnail
三十歲進入婚姻,三十五歲完成生子計畫。六十歲,孩子成家立業,我們的責任也宣告結束,功成身退。六十歲開始不一樣的人生,這個人生就是為自己的晚年鋪路,如果說六十歲開始投入慈善,慈善年齡就是一歲,許多阿公阿嬤從六十歲做到九十歲,慈善年齡就是三十歲,想想,三十年可以囤積多少功德財,福慧福雙的紅地毯都鋪到下一
Thumbnail
一位重新審視計程車刷卡機壞掉現象的乘客,陳述了自己的疑惑與感悟,而獲得成長的廢文。
Thumbnail
常常生活中會聽到有人的生日祝福語是”祝您長命百歲”,如今在醫學發達和人口結構的改變下,以及大家開始注重養生、樂活,平均壽命也越來越長,依據國發會的人口推估統計(如下圖),我國已於1993年成為高齡化社會,2018年轉為高齡社會,推估將於2025年邁入超高齡社會 (平均一百人中有二十位65歲以上老人)
新四十族群就是不只盤算金錢,還會接納居住、人際、甚至職場等新的議題到生活裏來,畢竟,從退休年齡一直到老死,還是想要活得精彩豐富呀!
幾歲以下算是年輕人?我覺得70歲以下吧(笑) 認真說,過了40歲之後覺得自己這個年齡很尷尬,可能沒有太多社會歷練(摧殘)和戀愛經驗(抱蛋),我自認心態想法,也就是心理年齡是低於生理年齡的,有時候一些行為觀念依舊天真幼稚,但又自覺不該過度外顯這些,只好稍微裝成熟穩重。 想想跟我同齡的人
Thumbnail
大概在20多年前吧,那時還是大學生,也有一次印象深刻的搭車經驗。
廣義的來說,六十五歲以上即邁入高齡。65 至 74 歲稱為 early elderly,75歲以上則為 late elderly。 根據世界衛生組織WHO的調查,2010年時全世界約有 5 億兩千四百萬的人口為六十五歲以上,這佔了全世界總人口的約8%。 這個數據預估會於 2050 年快速的成長三
Thumbnail
人生70才開始,越活越年輕的時代來臨。台灣將在2025年進入超高齡化社會,也就是五人之中就有一位超過65歲,老年生活如何精彩度過和保持身心靈的健康,是面對超高齡化社會來臨的重要課題。失去活動力,即缺乏運動和長時間久坐,是影響年長者慢性疾病和失能發生的重要原因。完善的生活空間,對於年長者的活動力具
Thumbnail
週日的早上,因參加雲林大埤采風的走讀課程,第一次搭高鐵到雲林。上車找到自己靠窗座位時,三人座的中間已坐著一位優雅的年長女士。對她點頭示意後,跨過她的手提行李箱入座。旋即功夫,她的左手邊座位已由另一位女士就位。 閉目養神中,聽到她們開始交談。左邊女士問及年長女士貴庚?答曰:82歲。聽後當然不免俗地,
Thumbnail
三十歲進入婚姻,三十五歲完成生子計畫。六十歲,孩子成家立業,我們的責任也宣告結束,功成身退。六十歲開始不一樣的人生,這個人生就是為自己的晚年鋪路,如果說六十歲開始投入慈善,慈善年齡就是一歲,許多阿公阿嬤從六十歲做到九十歲,慈善年齡就是三十歲,想想,三十年可以囤積多少功德財,福慧福雙的紅地毯都鋪到下一
Thumbnail
一位重新審視計程車刷卡機壞掉現象的乘客,陳述了自己的疑惑與感悟,而獲得成長的廢文。
Thumbnail
常常生活中會聽到有人的生日祝福語是”祝您長命百歲”,如今在醫學發達和人口結構的改變下,以及大家開始注重養生、樂活,平均壽命也越來越長,依據國發會的人口推估統計(如下圖),我國已於1993年成為高齡化社會,2018年轉為高齡社會,推估將於2025年邁入超高齡社會 (平均一百人中有二十位65歲以上老人)
新四十族群就是不只盤算金錢,還會接納居住、人際、甚至職場等新的議題到生活裏來,畢竟,從退休年齡一直到老死,還是想要活得精彩豐富呀!
幾歲以下算是年輕人?我覺得70歲以下吧(笑) 認真說,過了40歲之後覺得自己這個年齡很尷尬,可能沒有太多社會歷練(摧殘)和戀愛經驗(抱蛋),我自認心態想法,也就是心理年齡是低於生理年齡的,有時候一些行為觀念依舊天真幼稚,但又自覺不該過度外顯這些,只好稍微裝成熟穩重。 想想跟我同齡的人