1010. 总持续时间可被 60 整除的歌曲

简单题,但是自己没有想起来O(n)的时间内解决。用的是两个for循环。而O(n)的时间内,和桶排序很像。利用余数直接判断成对的对象,省去了一次遍历。

class Solution {

    public int numPairsDivisibleBy60(int[] time) {

        int length = time.length;

        int result = 0;

        int[] nums = new int[60];

        for(int i = 0; i 

            nums[time[i]%60]++;

        }

        int i = 1; int j = 59;

        while(i<30){

            result += nums[i] * nums[j];

            i++;

            j--;

        }

        // 0的组合

        result+= nums[0]>1? nums[0] * (nums[0]-1 )/2:0;

        // 30的组合

        result+= nums[30]>1? nums[30] * (nums[30]-1 )/2:0;

        return result;

    }

}

你可能感兴趣的:(1010. 总持续时间可被 60 整除的歌曲)