鱼C论坛

 找回密码
 立即注册
查看: 1090|回复: 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:
<i>输入:[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</i>
示例2:
<i>输入:[60,60,60]
输出:3
<div>解释:所有三对的总持续时间都是 120,可以被 60 整数。
</div></i>


提示:

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

using namespace std;

class Solution
{
public:
        int num[61];
        int res;
        int numPairsDivisibleBy60(vector<int>& time) {
                //使用empty判断数组是否为空 
                if(time.empty())
                        return 0;
                        
                //memset()函数原型是extern void *memset(void *buffer, int c, int count)        
                //buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度.
                //Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;
                memset(num,0,sizeof num );
                
                //这是一个循环--对60求模 
                for(int i = 0; i < time.size(); i++)
                {
                        time[i] %= 60;
                        num[time[i]]++;
                }
                
                //对数组元素进行排序
                //sort(begin,end),表示一个范围
                //需要加上头文件#include <algorithm>
                sort(time.begin(),time.end());
                
                for(int i = 0; i < time.size(); i++)
                {
                        //break->结束当前循环 
                        //continue-> 跳出当前循环,实行下一循环 
                        if(time[i] >= 30) break; 
                        if(time[i] == 0)  continue;
                        res += num[60 - time[i]];//寻找time[i]所对应的那个相加为60的数,返回那个数的个数 
                }
                
                //计算30,0相应的个数 
                res += (num[30]*(num[30]-1))/2;
                res += (num[0]*(num[0]-1))/2;
                return res;
        }
};

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

        Solution s1;
        int a = s1.numPairsDivisibleBy60(num1);
        
        cout << a << endl;
        
        return 0;
}
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-11-23 06:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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