美文网首页
1010. 总持续时间可被 60 整除的歌曲

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

作者: kaikai1234 | 来源:发表于2020-05-21 13:10 被阅读0次

    简单题,但是自己没有想起来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;

        }

    }

    相关文章

      网友评论

          本文标题:1010. 总持续时间可被 60 整除的歌曲

          本文链接:https://www.haomeiwen.com/subject/hqyzohtx.html