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 <length;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;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。