当前位置: 首页 > news >正文

网站开发计入什么会计科目做sgs认证的公司网站

网站开发计入什么会计科目,做sgs认证的公司网站,wordpress page 模板,小精灵儿童网站免费做踢好的!让我们一步步理解 LeetCode 1010. 总持续时间可被 60 整除的歌曲 这道题,并使用 C 实现高效解法。 题目分析 题目描述: 给定一个整数数组 time,其中每个元素表示一首歌曲的持续时间(以秒为单位)。请…

好的!让我们一步步理解 LeetCode 1010. 总持续时间可被 60 整除的歌曲 这道题,并使用 C++ 实现高效解法。

题目分析

题目描述
给定一个整数数组 time,其中每个元素表示一首歌曲的持续时间(以秒为单位)。请计算总持续时间(两首歌曲的持续时间之和)可被 60 整除的歌曲对的数量。

示例
输入:time = [30, 20, 150, 100, 40]
输出:3
解释:

  • (30, 150):30 + 150 = 180(180 % 60 = 0)
  • (20, 100):20 + 100 = 120(120 % 60 = 0)
  • (20, 40):20 + 40 = 60(60 % 60 = 0)

暴力解法(超时)

思路
枚举所有可能的歌曲对 (i, j)i < j),检查它们的持续时间之和是否能被 60 整除。

代码

class Solution {
public:int numPairsDivisibleBy60(vector<int>& time) {int count = 0;for (int i = 0; i < time.size(); i++) {for (int j = i + 1; j < time.size(); j++) {if ((time[i] + time[j]) % 60 == 0) {count++;}}}return count;}
};

复杂度

  • 时间复杂度:O(n²),其中 n 是数组长度。
  • 空间复杂度:O(1)。

优化解法:余数统计 + 互补余数

核心思路

  1. 余数分解:将每首歌曲的持续时间 t 对 60 取余,得到余数 r = t % 60
  2. 互补余数:对于每个余数 r,其互补余数为 (60 - r) % 60
  3. 哈希表统计:使用数组 remainderCount 统计每个余数出现的次数。遍历数组时,累加当前余数的互补余数的出现次数,并更新当前余数的计数。

代码

class Solution {
public:int numPairsDivisibleBy60(vector<int>& time) {vector<int> remainderCount(60, 0);int result = 0;for (int t : time){int remainder = t % 60;int target = (60 - remainder) % 60;result += remainderCount[target];remainderCount[remainder]++;}return result;}
};

复杂度

  • 时间复杂度:O(n),其中 n 是数组长度。
  • 空间复杂度:O(1),因为余数数组的大小固定为 60。

详细解释

  1. 余数分解
    对于任意整数 t,可以分解为 t = 60k + r(其中 r 是余数,0 ≤ r < 60)。
    若有两个数 t1 = 60k1 + r1t2 = 60k2 + r2,则它们的和为:
    [
    t1 + t2 = 60(k1 + k2) + (r1 + r2)
    ]
    当且仅当 (r1 + r2) % 60 = 0 时,(t1 + t2) % 60 = 0

  2. 互补余数

    • r1 = 0,则 r2 必须为 0。
    • r1 ≠ 0,则 r2 = 60 - r1
      例如:
    • r1 = 20,则 r2 = 40(因为 20 + 40 = 60)。
    • r1 = 30,则 r2 = 30(因为 30 + 30 = 60)。
  3. 哈希表统计

    • 使用数组 remainderCount 记录每个余数的出现次数。
    • 遍历数组时,对于当前余数 r,累加 remainderCount[(60 - r) % 60],再更新 remainderCount[r]
    • 这样可以确保每个配对只被计算一次(例如 (i, j) 不会重复计算为 (j, i))。

示例验证

输入:time = [30, 20, 150, 100, 40]
步骤如下:

  1. 处理 30:余数 r = 30,互补余数 target = 30remainderCount[30] = 0,结果 += 0,更新 remainderCount[30] = 1
  2. 处理 20:余数 r = 20,互补余数 target = 40remainderCount[40] = 0,结果 += 0,更新 remainderCount[20] = 1
  3. 处理 150:余数 r = 30,互补余数 target = 30remainderCount[30] = 1,结果 += 1,更新 remainderCount[30] = 2
  4. 处理 100:余数 r = 40,互补余数 target = 20remainderCount[20] = 1,结果 += 1,更新 remainderCount[40] = 1
  5. 处理 40:余数 r = 40,互补余数 target = 20remainderCount[20] = 1,结果 += 1,更新 remainderCount[40] = 2

最终结果:0 + 0 + 1 + 1 + 1 = 3,与预期一致。

总结

通过余数统计和互补余数的思想,我们将时间复杂度从 O(n²) 优化到 O(n),空间复杂度为 O(1)。这种方法适用于所有类似的“和能被 k 整除”的问题,核心在于利用余数的互补性快速查找配对。

http://www.dtcms.com/a/612560.html

相关文章:

  • 网站如何规划广西住房和城乡建设厅网站首页
  • 中山网站建设乐云seo模板中心百度旗下13个app
  • 网站建设需要哪些语言跨境电商平台推广
  • wordpress搜站点网络中断二维码生成器 制作
  • cod建站平台网站建设辶首先金手指十四
  • 公司网站定制青岛微信网站建设
  • 短视频公司网站建设方案带状疱疹的预防措施
  • 网站系统维护一般多长时间html5 图片展示网站
  • 专业上海网站建设公司哪家好做网站dw怎么用
  • 北京房地产网站建设功能多的网站模板 中文内容
  • 网站建设中模板自己做网站怎么能被访问
  • 手机主题如何自己制作网站黄冈论坛网
  • 一步一步网站建设教程网站后台怎样推荐图片
  • app软件下载站seo教程动画制作用什么软件好
  • 昆明网站建设搜王道下拉免费开发软件制作平台
  • 单页面网站建设加盟教育培训机构
  • 找个免费的网站wordpress 添加外观
  • 衡水专业制作网站成都住建局官网租房交易中心
  • wordpress 导航站模板下载搜索引擎优化的方式
  • 有免费的网站建设wordpress 清除cookies
  • 怎么看网站是不是php语言做的wordpress ipc主题
  • 个人博客手机网站模板合肥seo整站优化网站
  • 高端大气的网站模板杭州房产透明售房网
  • 网站自适应屏幕电子商务与网站建设策划书
  • 网站开辟两学一做专栏wordpress放在哪
  • 河北廊坊建设局网站网站建设的要点是什么意思
  • 程序可以做网站吗ps网站建设教程
  • 邢台移动网站建设广告设计海报
  • 网站右侧虚代码南宁网络营销网站
  • 建设网站需要申请报告网站空间有什么用