LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
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 整除的歌曲(哈希)相关推荐
- 成对的歌曲,其总持续时间可被60整除
Problem statement: 问题陈述: In a list of songs, the i-th song has duration of time[i] seconds. Return t ...
- 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记录 ...
- LeetCode 1629. 按键持续时间最长的键
文章目录 1. 题目 2. 解题 1. 题目 LeetCode 设计了一款新式键盘,正在测试其可用性.测试人员将会点击一系列键(总计 n 个),每次一个. 给你一个长度为 n 的字符串 keysPre ...
- leetcode 368. Largest Divisible Subset | 368. 最大整除子集(动态规划详解)
题目 https://leetcode.com/problems/largest-divisible-subset/ 哎,动态规划对我来说仍然是玄学- 只要有动态规划,medium is harder ...
- 【Golang Leetcode】总目录(Day1~100)
Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子 ...
- 【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)
文章目录 题目描述 代码 & 思路 1. 二维数组(方便理解) 2. 一维数组(节约空间) 二刷 鸽了好久的打题博客-要继续补起来了! 今天不打题,明天变垃圾 QAQ 题目描述 一眼就想先暴力 ...
- LeetCode 中级 - 第k个排列(60)
可以用数学的方法来解, 因为数字都是从1开始的连续自然数, 排列出现的次序可以推算出来, 对于n=4, k=15 找到k=15排列的过程:1 + 对2,3,4的全排列 (3!个) 2 + 对1,3,4 ...
- LeetCode 523. 连续的子数组和(求余 哈希)
1. 题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示例 1: 输入 ...
- LeetCode 2053. 数组中第 K 个独一无二的字符串(哈希)
文章目录 1. 题目 2. 解题 1. 题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字 ...
最新文章
- SimpleHTTPServer中出错信息:SocketServer doesn't handle client disconnects properly
- 计算机应用基础试题及答案试卷号7074,阅读文章,完成试题。后来才知道,在这千钧一发的时刻,是郝副营长划着了火柴,点燃了那本书,举得高高的, - 学进去中小学试卷试题库...
- 5、优化MySQL服务器
- cxLookupComboBox使用方法
- 【LoadRunner】安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
- HBuilderX真机调试检测不到魅族手机
- jsp input输入实时校验长度并提示_拆解「输入框」,理解输入反馈的规则逻辑
- python 快速排名发包_2019年SEO快速排名发包技术及原理 - 立金哥
- 3个月的产品实习生,还不会画原型和做UI设计
- JS获取Audio音频的实时时间
- dubbo filter原理
- Tomcat网站服务
- Win10自带录屏怎么用?一键开启,超级简单!
- Python实现数字转人民币(大写汉字)源代码
- 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建
- mi4a android tv,小米电视4A精简系统教程
- matlab实现图片锐化处理
- 算法中的最优化方法总结(中国科学院大学)
- 基于Proteus学习单片机系列(七)——AD转换及其应用--ADC0832
- Python中Pickle库