首页 > 其他分享 >LeetCode|3184. 构成整天的下标对数目 I(day20)

LeetCode|3184. 构成整天的下标对数目 I(day20)

时间:2024-10-23 22:21:11浏览次数:3  
标签:24 hours 下标 复杂度 day20 3184 let LeetCode count

作者:MJ昊

博客:掘金CSDN

公众号:程序猿的编程之路

今天是 昊 的算法之路第20天,今天分享的是LeetCode第3184题构成整天的下标对数目 I的解题思路。这是一道简单难度的题目,考察的是数组元素之间的组合与模运算。

题目描述简要回顾

给定一个整数数组hours,求满足(hours[i] + hours[j]) % 24 == 0下标对(i, j)的数量。每对元素之和若能被 24 整除,则认为它们构成一个完整的“整天”。

解题思路

我们需要找到所有的符合(hours[i] + hours[j]) % 24 == 0的下标对(i, j)

  • 朴素方法是使用双重循环枚举所有可能的下标组合,并检查它们的和是否能被 24 整除。
  • 这种解法的时间复杂度是 O(n²),适用于数据量较小的情况。

代码实现:

var countCompleteDayPairs = function (hours) {
  let count = 0;
  for (let i = 0; i < hours.length - 1; i++) {
    for (let j = i + 1; j < hours.length; j++) {
      if ((hours[i] + hours[j]) % 24 == 0) {
        count++;
      }
    }
  }
  return count;
};

复杂度分析

时间复杂度: O(n²),需要枚举所有的下标组合。
空间复杂度: O(1),仅使用了常数空间。

总结

该题目主要考察双重循环的使用和模运算的应用。在数据量较小的情况下,直接枚举所有组合是可以接受的。对于更大规模的数据,可以考虑优化,例如使用哈希表统计元素的模值频率,从而将时间复杂度降低到 O(n)。

标签:24,hours,下标,复杂度,day20,3184,let,LeetCode,count
From: https://blog.csdn.net/Hao_i/article/details/143170506

相关文章

  • 每日一题:Leetcode-316 去除重复字母
    力扣题目解题思路java代码力扣题目:给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例1:输入:s="bcabc"输出:"abc"示例2:输入:s="cbacdcbc"输出:"acdb"提示:1<=s.l......
  • LeetCode刷题-移除元素
    给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素。元素的顺序可能发生改变。然后返回nums中与val不同的元素的数量。假设nums中不等于val的元素数量为k,要通过此题,您需要执行以下操作:更改nums数组,使nums的前k个元素包含不等于val的......
  • 代码随想录算法训练营第八天|leetcode344.反转字符串、leetcode541. 反转字符串II、卡
    1leetcode344.反转字符串题目链接:344.反转字符串-力扣(LeetCode)文章链接:代码随想录视频链接:字符串基础操作!|LeetCode:344.反转字符串_哔哩哔哩_bilibili自己的思路:直接使用python的内置函数reverse进行一个操作1.1自己的代码1.1.1python的内置函数classSolution:......
  • 【快慢指针】LeetCode 143. 重排链表
    题解用快慢指针先找到中间结点,然后断开前后两条链,用头插法的思路逆转后面那条链,最后两条链依次从前往后遍历插入即可。参考代码/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nul......
  • 【从零开始的LeetCode-算法】884. 两句话中的不常见单词
    句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。......
  • 【从零开始的LeetCode-算法】3184. 构成整天的下标对数目 I
    给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i<j 且 hours[i]+hours[j] 构成 整天 的下标对 i, j 的数目。整天 定义为时间持续时间是24小时的 整数倍 。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。示例1:......
  • 代码随想录算法训练营第七天|leetcode454.四数相加II、leetcode383. 赎金信 、leetcod
    1leetcode454.四数相加II题目链接:454.四数相加II-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,map使用有技巧!LeetCode:454.四数相加II_哔哩哔哩_bilibili自己的思路:第一反应就是暴力搜索,一层一层for循环来完成,就是会超时1.1自己的代码纯纯暴力搜索classSolutio......
  • leetcode:二叉树oj题
    目录1.单值二叉树2.相同的树3.对称二叉树4.二叉树的前序遍历5.二叉树的中序遍历6.二叉树的后序遍历1.单值二叉树https://leetcode.cn/problems/univalued-binary-tree/description/        对于这道题,我们可以进行深度优先查找,当值相同时就继续向下查找......
  • 【LeetCode】动态规划—790. 多米诺和托米诺平铺(附完整Python/C++代码)
    动态规划—790.多米诺和托米诺平铺题目描述前言基本思路1.定义2.理解问题和递推关系3.解决方法4.进一步优化5.小总结代码实现Python代码Python代码解释总结C++代码C++代码解释总结总结题目描述前言本文将详细讨论LeetCode上的"多米诺和三米诺平铺"问题。......
  • 3184. 构成整天的下标对数目 I
    给你一个整数数组hours,表示以小时为单位的时间,返回一个整数,表示满足i<j且hours[i]+hours[j]构成整天的下标对i,j的数目。整天定义为时间持续时间是24小时的整数倍。例如,1天是24小时,2天是48小时,3天是72小时,以此类推。示例1:输入:hours=[12,12,......