1. 题目

在歌曲列表中,第 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pairs-of-songs-with-total-durations-divisible-by-60
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 暴力法,不可取,会超时
class Solution { //暴力,超时代码
public:int numPairsDivisibleBy60(vector<int>& time) {int i, j, sum = 0;for(i = 0; i < time.size()-1; ++i)for(j = i+1; j < time.size(); ++j)if((time[i]+time[j])%60 == 0)sum++;return sum;}
};
  • 采用数组,最简单的哈希映射
  • 对歌曲求模,歌曲落在0-59的数组内
  • 对歌曲数进行排列组合即可
class Solution {public:int numPairsDivisibleBy60(vector<int>& time) {int t[60] = {0};//求余后的秒数,对应的歌曲数for(int &s : time)t[s%60]++;int ans = 0;ans += t[0]*(t[0]-1)/2 + t[30]*(t[30]-1)/2;//组合数Cn2for(int i = 1; i < 30; ++i){ans += t[i]*t[60-i];}return ans;}
};

LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)相关推荐

  1. 成对的歌曲,其总持续时间可被60整除

    Problem statement: 问题陈述: In a list of songs, the i-th song has duration of time[i] seconds. Return t ...

  2. LeetCode 1010. Pairs of Songs With Total Durations Divisible by 60

    原题目:https://leetcode-cn.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/ 思路: 用数组m记录 ...

  3. LeetCode 1629. 按键持续时间最长的键

    文章目录 1. 题目 2. 解题 1. 题目 LeetCode 设计了一款新式键盘,正在测试其可用性.测试人员将会点击一系列键(总计 n 个),每次一个. 给你一个长度为 n 的字符串 keysPre ...

  4. leetcode 368. Largest Divisible Subset | 368. 最大整除子集(动态规划详解)

    题目 https://leetcode.com/problems/largest-divisible-subset/ 哎,动态规划对我来说仍然是玄学- 只要有动态规划,medium is harder ...

  5. 【Golang Leetcode】总目录(Day1~100)

    Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子 ...

  6. 【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)

    文章目录 题目描述 代码 & 思路 1. 二维数组(方便理解) 2. 一维数组(节约空间) 二刷 鸽了好久的打题博客-要继续补起来了! 今天不打题,明天变垃圾 QAQ 题目描述 一眼就想先暴力 ...

  7. LeetCode 中级 - 第k个排列(60)

    可以用数学的方法来解, 因为数字都是从1开始的连续自然数, 排列出现的次序可以推算出来, 对于n=4, k=15 找到k=15排列的过程:1 + 对2,3,4的全排列 (3!个) 2 + 对1,3,4 ...

  8. LeetCode 523. 连续的子数组和(求余 哈希)

    1. 题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示例 1: 输入 ...

  9. LeetCode 2053. 数组中第 K 个独一无二的字符串(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字 ...

最新文章

  1. SimpleHTTPServer中出错信息:SocketServer doesn't handle client disconnects properly
  2. 计算机应用基础试题及答案试卷号7074,阅读文章,完成试题。后来才知道,在这千钧一发的时刻,是郝副营长划着了火柴,点燃了那本书,举得高高的, - 学进去中小学试卷试题库...
  3. 5、优化MySQL服务器
  4. cxLookupComboBox使用方法
  5. 【LoadRunner】安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
  6. HBuilderX真机调试检测不到魅族手机
  7. jsp input输入实时校验长度并提示_拆解「输入框」,理解输入反馈的规则逻辑
  8. python 快速排名发包_2019年SEO快速排名发包技术及原理 - 立金哥
  9. 3个月的产品实习生,还不会画原型和做UI设计
  10. JS获取Audio音频的实时时间
  11. dubbo filter原理
  12. Tomcat网站服务
  13. Win10自带录屏怎么用?一键开启,超级简单!
  14. Python实现数字转人民币(大写汉字)源代码
  15. 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建
  16. mi4a android tv,小米电视4A精简系统教程
  17. matlab实现图片锐化处理
  18. 算法中的最优化方法总结(中国科学院大学)
  19. 基于Proteus学习单片机系列(七)——AD转换及其应用--ADC0832
  20. Python中Pickle库

热门文章

  1. 随笔分类 - HALCON学习例程中文详解
  2. 修改内核的启动logo
  3. Linux设备驱动模型2——总线式设备驱动组织方式
  4. 【51nod】1934 受限制的排列
  5. Makefile文件(四)_书写命令
  6. jQuery 获取页面元素的属性值
  7. 二维码扫描利用ZBar实现
  8. A Way to implement Abstract Class In Flex
  9. 我的Linux内核学习笔记
  10. 你可能对电灯泡一无所知