题目链接

一维前缀和思想: s u m [ i ] sum[i] sum[i] = s u m [ i − 1 ] sum[i-1] sum[i−1] + a [ i ] a[i] a[i]

sum[l] - sum[l-2]     [l-2,l] 区间内的数是 k 的倍数
sum[l] - sum[l-3]     [l-3,l] 区间内的数是 k 的倍数
sum[l] - sum[l-4]     [l-4,l] 区间内的数是 k 的倍数
...
...
...
sum[l] - sum[1]       [1,l] 区间内的数是 k 的倍数
sum[l] - sum[0]       [0,l] 区间内的数是 k 的倍数

( s k s_k sk​ - s k − n s_{k-n} sk−n​)% k k k == 0 等价于 s k s_k sk​% k k k = s k − n % k s_{k-n}\%k sk−n​%k

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)

class Solution {public:bool checkSubarraySum(vector<int>& nums, int k) {int n = nums.size();vector<int> sum(n+1);for(int i = 1; i <= n; i++) sum[i] = sum[i-1] + nums[i-1];unordered_set<int> hash;for(int i = 2; i <= n; i++){hash.insert(sum[i-2]%k);if(hash.count(sum[i]%k)) return true;}return false;}
};

Leetcode 523 连续的子数组和 前缀和 + 哈希表相关推荐

  1. LeetCode 523. 连续的子数组和(求余 哈希)

    1. 题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示例 1: 输入 ...

  2. leetcode 523. Continuous Subarray Sum | 523. 连续的子数组和(同余定理)

    题目 https://leetcode.com/problems/continuous-subarray-sum/ 题解 没有想到 O(n) 的方法,于是直奔答案: 参考1:[宫水三叶]拓展到求方案数 ...

  3. LeetCode 862. 和至少为 K 的最短子数组(前缀和+deque单调栈)

    1. 题目 返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K . 如果没有和至少为 K 的非空子数组,返回 -1 . 示例 1: 输入:A = [1], K = 1 输出:1示例 2: ...

  4. LeetCode 560. 和为K的子数组(前缀和差分)

    1. 题目 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数. 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1 ...

  5. 1248. 统计「优美子数组」 前缀和

    给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」. 请返回这个数组中「优美子数组」的数目. 示例 1: 输入:nums ...

  6. 【算法】leetcode 974. 和可被 K 整除的子数组(前缀和思想)

    前言 前缀和相关: leetcode 974. 和可被 K 整除的子数组(前缀和思想) leetcode 560. 和为K的子数组(前缀和思想II) 问题来源 974. 和可被 K 整除的子数组 给定 ...

  7. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

  8. leetcode算法题--连续的子数组的和

    原题链接:https://leetcode-cn.com/problems/continuous-subarray-sum/ 1.暴力 这题用暴力方法非常简单的 bool checkSubarrayS ...

  9. LeetCode简单题之子数组最大平均数 I

    题目 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k . 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数. 任何误差小于 10-5 的答案都将被视为正确答案. 示例 ...

最新文章

  1. jquery对ajax的支持
  2. mysql去除字符串首的非字母_如何从SQLServer中的字符串中删除所有非字母字符?...
  3. js获取浏览器活跃页面,切换tab页状态
  4. 为啥不能用uuid做MySQL的主键!?
  5. iOS中UIWebview中网页宽度自适应的问题
  6. ‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  7. mysql include files_安装sphinx出现错误ERROR: cannot find MySQL include files.
  8. Python 包管理之 poetry
  9. sencha Touch 2.4 学习之 XTemplate模板
  10. HTML5 的定位一些重要知识点
  11. Delphi中CoInitialize之探究
  12. 尚硅谷韩顺平Linux教程学习笔记
  13. 不带脏字的英文骂人法
  14. Mysql IFNULL SUM 结合使用无效的问题
  15. JavaScript:在一个JS文件中引入另外的一个JS文件
  16. 2.初学者初始Elasticsearch
  17. QT学习之路-资料收藏集锦
  18. book review----Philosophical Issues in Tourism (Aspects of Tourism)
  19. v65i升级鸿蒙,华为智慧屏V65i,支持MEMC运动补偿
  20. sql-索引的作用(超详细)

热门文章

  1. AD20的一些基本操作
  2. Xeam Visual Installer白金版,Xeam Visual Installer完整用户体验
  3. HTMLCSS的语法与使用
  4. 流量矩阵常见的两种估计方法对比
  5. 再次携号转网_全国携号转网真来了!这些坑一定要小心!
  6. 163邮箱,163vip的邮箱收费标准是什么?
  7. 鸿蒙系统功能,华为HarmonyOS2.0系统功能都有哪些呢-华为鸿蒙系统HarmonyOS2.0功能介绍[图文]_咖绿茵手游站...
  8. MoveIt 1 源码构建: Linux
  9. Python,折线图,手写数字,图像反色、二值化、28X28
  10. 如何使用JavaScript来判断用户设备类型