鱼C论坛

 找回密码
 立即注册
查看: 986|回复: 2

[技术交流] C++打开LeetCode的大门---1010(数组)

[复制链接]
发表于 2020-5-25 21:21:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 这是她 于 2020-5-25 21:21 编辑

                                                                                                                  总持续时间可被60整除的歌曲
题目:
在歌曲列表中,第 i 首歌曲的持续时间为 time 秒。
返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i 和 j 满足  i < j 且有 (time + time[j]) % 60 == 0。

示例1:

  1. <i>输入:[30,20,150,100,40]
  2. 输出:3
  3. 解释:这三对的总持续时间可被 60 整数:
  4. (time[0] = 30, time[2] = 150): 总持续时间 180
  5. (time[1] = 20, time[3] = 100): 总持续时间 120
  6. (time[1] = 20, time[4] = 40): 总持续时间 60</i>
复制代码
示例2:
  1. <i>输入:[60,60,60]
  2. 输出:3
  3. <div>解释:所有三对的总持续时间都是 120,可以被 60 整数。
  4. </div></i>
复制代码


提示:

  • 1 <= time.length <= 60000
  • 1 <= time <= 500
代码:
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string.h>

  5. using namespace std;

  6. class Solution
  7. {
  8. public:
  9.         int num[61];
  10.         int res;
  11.         int numPairsDivisibleBy60(vector<int>& time) {
  12.                 //使用empty判断数组是否为空
  13.                 if(time.empty())
  14.                         return 0;
  15.                         
  16.                 //memset()函数原型是extern void *memset(void *buffer, int c, int count)        
  17.                 //buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度.
  18.                 //Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;
  19.                 memset(num,0,sizeof num );
  20.                
  21.                 //这是一个循环--对60求模
  22.                 for(int i = 0; i < time.size(); i++)
  23.                 {
  24.                         time[i] %= 60;
  25.                         num[time[i]]++;
  26.                 }
  27.                
  28.                 //对数组元素进行排序
  29.                 //sort(begin,end),表示一个范围
  30.                 //需要加上头文件#include <algorithm>
  31.                 sort(time.begin(),time.end());
  32.                
  33.                 for(int i = 0; i < time.size(); i++)
  34.                 {
  35.                         //break->结束当前循环
  36.                         //continue-> 跳出当前循环,实行下一循环
  37.                         if(time[i] >= 30) break;
  38.                         if(time[i] == 0)  continue;
  39.                         res += num[60 - time[i]];//寻找time[i]所对应的那个相加为60的数,返回那个数的个数
  40.                 }
  41.                
  42.                 //计算30,0相应的个数
  43.                 res += (num[30]*(num[30]-1))/2;
  44.                 res += (num[0]*(num[0]-1))/2;
  45.                 return res;
  46.         }
  47. };

  48. int main()
  49. {
  50.         vector<int> num1 = {30,40,60,80};

  51.         Solution s1;
  52.         int a = s1.numPairsDivisibleBy60(num1);
  53.         
  54.         cout << a << endl;
  55.         
  56.         return 0;
  57. }

复制代码

https://leetcode-cn.com/problems/pairs-of-songs-with-total-durations-divisible-by-60/solution/jian-dan-de-ji-shu-wen-ti-by-0x404/




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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-25 21:26:41 | 显示全部楼层
领扣?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-25 21:42:05 | 显示全部楼层
哇(⊙o⊙)!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-8 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表