leetcode力扣刷题系列——【构成整天的下标对数目 I】

题目

给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i < j 且 hours[i] + hours[j] 构成 整天 的下标对 i, j 的数目。
整天 定义为时间持续时间是 24 小时的 整数倍 。
例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。

示例 1:
输入:
hours = [12,12,30,24,24]
输出:
2
解释:
构成整天的下标对分别是 (0, 1) 和 (3, 4)。

示例 2:
输入:
hours = [72,48,24,3]
输出:
3
解释:
构成整天的下标对分别是 (0, 1)、(0, 2) 和 (1, 2)。

提示:
1 <= hours.length <= 100
1 <= hours[i] <= 10^9

答案

我的答案:
第一次写的时候没看懂题目,我以为只要hours中有整数天数把整数的天数加一起就可以。 很尴尬,后面仔细看了示例和解释才看懂到底要干什么。方法很简单啊采用的是两个for循环就能搞定,今天我也会在想一想有没有其他的方法来做这个题目。

class Solution:
    def countCompleteDayPairs(self, hours: List[int]) -> int:
        count=0
        for i in range(len(hours)):
            for j in range(i+1,len(hours)):
                if (hours[i]+hours[j])%24==0:
                    count+=1
        return count

官方的方法:

方法一:暴力
思路与算法

我们可以枚举每一个 hours[i],然后遍历剩下的 hours[j],如果 hours[i]+hours[j] 能够被 24 整除,就对答案进行累加。
注意,枚举的方向可以从左往右,也可以从右往左,即对于每一个 hours[i],可以查看 j>i 或查看 j<i 时的 hours[j] 能否与 hours[i] 成对,只需要保证枚举不会重复即可。

class Solution:
    def countCompleteDayPairs(self, hours: List[int]) -> int:
        ans = 0
        for i in range(1, len(hours)):
            for j in range(i):
                if (hours[i] + hours[j]) % 24 == 0:
                    ans += 1
        return ans

作者:力扣官方题解
这是链接哦
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

————————————————————————————————————————————————————————
昨天确实有点忙,但是万幸今天给的题目是构成整天的下标对数目 II,我看讨论中都在说1和2有什么区别,其实最大的区别就是两个hours的长度不一样,1的长度只有100非常的小,暴力解法完全足够。但是2给的hours的长度是五十万的长度,再用双重for循环的话就非常吃力了。不过还好我做了第二期——构成整天的下标对数目 II。如果有需要的小伙伴可以看我第二期的内容哦~~最后谢谢各位的支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火眼猊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值