🔗 🟢 2678. Number of Senior Citizens 1199

tags: Biweekly Contest 104 陣列(Array) 字串(String)

題意

給定一個下標從 00 開始的字串陣列 detailsdetails ,其中每個元素都是一個長度為 1515 的字串,表示一個乘客的資訊,前十個字元表示手機號碼,以及接下來的一個字元表示性別,接下來兩個字元表示年齡,最後兩個字元表示座位。

請返回年齡 嚴格大於 6060 歲的乘客數量。

思路:遍歷

使用一個計數器 ansans 來記錄年齡大於 6060 的乘客數量,初始化為 00。遍歷整個字串陣列 detailsdetails,對於每個字串,提取出年齡部分並轉換為整數,然後檢查這個年齡是否嚴格大於 6060。如果是,則將答案 ansans 加一,遍歷完所有字串後,ansans 的值就是年齡大於 6060 的乘客數量。

複雜度分析

  • 時間複雜度:O(n)\mathcal{O}(n),其中 nn 是字串陣列 detailsdetails 的長度。我們需要遍歷每個字串一次。
  • 空間複雜度:O(1)\mathcal{O}(1),只需要常數空間來存儲計數器 ansans 和臨時變量。
1
2
3
4
5
6
7
8
class Solution:
def countSeniors(self, details: List[str]) -> int:
# return sum(int(detail[11:13]) > 60 for detail in details)
ans = 0
for detail in details:
if int(detail[11:13]) > 60:
ans += 1
return ans
1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int countSeniors(vector<string>& details) {
int ans = 0;
for (string& detail : details)
if ((detail[11] - '0') * 10 + (detail[12] - '0') > 60)
ans++;
return ans;
}
};

寫在最後

Cover photo is remixed from @吃肥皂泡泡, thanks for their work!