1010. 總持續時間可被 60 整除的歌曲, leetcode

 在歌曲列表中,第 i 首歌曲的持續時間爲 time[i] 秒。

返回其總持續時間(以秒爲單位)可被 60 整除的歌曲對的數量。形式上,我們希望索引的數字 i 和 j 滿足  i < j 且有 (time[i] + time[j]) % 60 == 0

 

示例 1:

輸入:[30,20,150,100,40]
輸出:3
解釋:這三對的總持續時間可被 60 整數:
(time[0] = 30, time[2] = 150): 總持續時間 180
(time[1] = 20, time[3] = 100): 總持續時間 120
(time[1] = 20, time[4] = 40): 總持續時間 60

示例 2:

輸入:[60,60,60]
輸出:3
解釋:所有三對的總持續時間都是 120,可以被 60 整數。

 

提示:

  1. 1 <= time.length <= 60000
  2. 1 <= time[i] <= 500

注意0/30情況即可

class Solution {
public:
    int numPairsDivisibleBy60(vector<int>& time) {
        if (time.empty()) {
            return 0;
        }
        vector<int> dict(61, 0);
        for (auto num : time) {
            dict[num % 60] += 1;
        }
        int count = 0;
        for (int i = 1; i < 30; ++i) {
            count += dict[i] * dict[60 - i];
        }
        if (dict[30] >= 2) {
            count += (dict[30] * (dict[30] - 1) / 2);
        }
        if (dict[0] >= 2) {
            count += (dict[0] * (dict[0] - 1) / 2);
        }
        return count;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章