在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。

返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 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 <= time.length <= 60000

1 <= time[i] <= 500

Java版 时间复杂度O(n)

class Solution {
public int numPairsDivisibleBy60(int[] time) {
int i,total=0,len=time.length;
int[] res = new int[60]; // 整除60余数 初始化默认值0
for(i=0;i<len;i++) {
res[time[i]%60]++;
}
//余数为0 的统计 和余数为30 的单独统计
total += res[0]*(res[0]-1)/2 + res[30]*(res[30]-1)/2;
//余数为 1~59的统计(不包括30)
for(i=1;i<30;i++) {
total += res[i] * res[60-i] ;
}
return total;
}
}

C语言版 时间复杂度O(n*n) 提交超时

int numPairsDivisibleBy60(int* time, int timeSize) {
int i,j,total=0;
for (i = 0; i < timeSize-1; i++) {
for (j = i+1; j < timeSize; j++) {
if((time[i]+time[j])%60 == 0) {
total++;
}
}
}
return total;
}

C语言版 时间复杂度O(n)

int numPairsDivisibleBy60(int* time, int timeSize) {
int i,total=0;
int res[60] = {0}; // 整除60余数 初始化默认值0
for(i=0;i<timeSize;i++) {
res[time[i]%60]++;
}
//余数为0 的统计 和余数为30 的单独统计
total += res[0]*(res[0]-1)/2 + res[30]*(res[30]-1)/2;
//余数为 1~59的统计(不包括30)
for(i=1;i<30;i++) {
total += res[i] * res[60-i] ;
}
return total;
}

运行结果

力扣(LeetCode) 1010. 总持续时间可被 60 整除的歌曲的更多相关文章

  1. Leetcode 1013. 总持续时间可被 60 整除的歌曲

    1013. 总持续时间可被 60 整除的歌曲  显示英文描述 我的提交返回竞赛   用户通过次数450 用户尝试次数595 通过次数456 提交次数1236 题目难度Easy 在歌曲列表中,第 i 首 ...

  2. [Swift]LeetCode1010. 总持续时间可被 60 整除的歌曲 | Pairs of Songs With Total Durations Divisible by 60

    In a list of songs, the i-th song has a duration of time[i] seconds. Return the number of pairs of s ...

  3. 1013. Pairs of Songs With Total Durations Divisible by 60总持续时间可被 60 整除的歌曲

    网址:https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/submissions/ 参考 ...

  4. LeetCode.1010-歌曲总长度可被60整除的对数

    这是小川的第377次更新,第405篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第239题(顺位题号是1010).在歌曲列表中,第i首歌曲的持续时间为[i]秒. 返回其总 ...

  5. 力扣Leetcode 179. 最大数 EOJ 和你在一起 字符串拼接 组成最大数

    最大数 力扣 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说 ...

  6. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  7. 【力扣leetcode】-787. K站中转内最便宜的航班

    题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...

  8. 力扣Leetcode 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...

  9. 力扣Leetcode 1518. 换酒问题

    小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 numBottles 瓶酒. 如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的. 请你计算 最多 能喝到多少瓶酒. 示例: ...

随机推荐

  1. oracle之存储过程和存储函数的使用和区别

    #存储过程:封装在服务器上一段sql片段,已经编译好了的代码. 1.客户端调存储过程,执行效率就会非常高效. 语法: create [or replace] procedure 存储过程名称 (参数名 ...

  2. AirTest源码分析之运行器

    from: https://blog.csdn.net/u012897401/article/details/82900562 使用:根据airtest文档说明,可以通过命令行来启动air脚本,需要传 ...

  3. linux下mysql 8.0安装

    安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...

  4. php7安装redis拓展

    phpredis下载地址https://github.com/phpredis/phpredis   解压并进入源码包 unzip phpredis-develop.zip cd phpredis-d ...

  5. Codeforces Round #427 (Div. 2) Problem B The number on the board (Codeforces 835B) - 贪心

    Some natural number was written on the board. Its sum of digits was not less than k. But you were di ...

  6. Auto.js 初试-Android开发JS利器

    GitHub地址:https://github.com/hyb1996/Auto.js 文档地址:https://hyb1996.github.io/AutoJs-Docs/#/?id=%E7%BB% ...

  7. Ground Defense【不知道叫啥可能就是枚举】

    问题 G: Ground Defense 时间限制: 1 Sec  内存限制: 128 MB 提交: 116  解决: 22 [提交] [状态] [命题人:admin] 题目描述 You are a ...

  8. Visual Studio Code 的 launch.json 解析

    { "version": "0.2.0", "configurations": [ { "name": "(g ...

  9. vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件

    使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...

  10. Java lambda例子

    简单数据类型int,跟Integer在lambda中的使用还不一样,有区别 code: package com.qhong.lambda.testDemo; import java.util.Arra ...