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

谁家做网站比较好静态网站开发步骤

谁家做网站比较好,静态网站开发步骤,培训网站,品牌网站建设h5题目链接 Leetcode.974 和可被 K 整除的子数组 rating : 1676 题目描述 给定一个整数数组 n u m s nums nums 和一个整数 k k k ,返回其中元素之和可被 k k k 整除的(连续、非空) 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&…

题目链接

Leetcode.974 和可被 K 整除的子数组 rating : 1676

题目描述

给定一个整数数组 n u m s nums nums 和一个整数 k k k ,返回其中元素之和可被 k k k 整除的(连续、非空) 子数组 的数目。

子数组 是数组的 连续 部分。

示例 1:

输入:nums = [4,5,0,-2,-3,1], k = 5
输出:7
解释:
有 7 个子数组满足其元素之和可被 k = 5 整除:
[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

示例 2:

输入: nums = [5], k = 9
输出: 0

提示:
  • 1 ≤ n u m s . l e n g t h ≤ 3 ∗ 1 0 4 1 \leq nums.length \leq 3 * 10^4 1nums.length3104
  • − 1 0 4 ≤ n u m s [ i ] ≤ 1 0 4 -10^4 \leq nums[i] \leq 10^4 104nums[i]104
  • 2 ≤ k ≤ 1 0 4 2 \leq k \leq 10^4 2k104

解法:前缀和 + 哈希表

我们假设 [ j , i ] [j,i] [j,i] 区间的子数组元素和可以被 k k k 整除,即 :

( n u m s [ j ] + n u m s [ j + 1 ] + . . . + n u m s [ i − 1 ] + n u m s [ i ] ) m o d k = 0 (nums[j] + nums[j + 1] + ... + nums[i-1] + nums[i])\ mod\ k = 0 (nums[j]+nums[j+1]+...+nums[i1]+nums[i]) mod k=0

我们用 s u m sum sum 表示 n u m s nums nums 的前缀和数组,可将上式转换为:

( s u m [ i ] − s u m [ j − 1 ] ) m o d k = 0 (sum[i] - sum[j-1])\ mod\ k = 0 (sum[i]sum[j1]) mod k=0

再转换一下得到:

s u m [ j − 1 ] m o d k = s u m [ i ] m o d k sum[j-1]\ mod\ k= sum[i]\ mod\ k sum[j1] mod k=sum[i] mod k

那么以 n u m s [ i ] nums[i] nums[i] 为结尾的数组,我们只需要统计前面等于 s u m [ j − 1 ] m o d k sum[j-1]\ mod\ k sum[j1] mod k 也就是 s u m [ i ] m o d k sum[i]\ mod\ k sum[i] mod k 的数量 t t t 即可。

那么这个 t t t 就是以 n u m s [ i ] nums[i] nums[i] 为结尾的数组中 和能被 k k k 整除的子数组的数量。

我们只需要对每一个 n u m s [ i ] nums[i] nums[i] 都加上 t t t 即可,这样我们就可以统计出所有的 和能被 k k k 整除的子数组的数量。

在实现上,我们使用哈希表来记录前缀和出现的次数。初始时,和为 0 0 0 ,也需要统计它的出现次数,即 { 0 , 1 } \{ 0 , 1 \} {0,1}

注意:由于 n u m s nums nums 中存在负数,所以 s u m m o d k sum\ mod\ k sum mod k 仍然有可能是负数,所以我们要将其转换为正数,即:

k e y = ( s u m m o d k + k ) m o d k key = (sum\ mod\ k + k)\ mod\ k key=(sum mod k+k) mod k

时间复杂度: O ( n ) O(n) O(n)

C++代码:

class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {int n = nums.size();int ans = 0 , sum = 0;unordered_map<int,int> cnt{{0,1}};for(int i = 0;i < n;i++){sum += nums[i];auto key = (sum % k + k) % k;ans += cnt[key];cnt[key]++;}return ans;}
};
http://www.yayakq.cn/news/433466/

相关文章:

  • 站长之家psd中国猎头公司前十名
  • 北京住房建设部网站xrea wordpress
  • 湖南做网站 要上磐石网络网站设计主页
  • 网站开发制作公司名称安贞网站建设
  • 上海网站搭建公司哪家好禅城区网站建站网站
  • 网站建设企业电话建设工程交流网站
  • 建设网站的公司济南兴田德润o简介图片wordpress appcan-wp
  • 手机端快速建站工具广西网站建设企业
  • 好的响应式网站一个人搞得定网站建设
  • 公司网站建设情况报告成武县住房和城乡建设局网站
  • 苏州吴中区建设局工程网站免费wap网站建设
  • 金华网站制作系统模板建站和定制网站的对比
  • 使页面具有动态效果的网站建设技术是wordpress iconic
  • 东昌府网站制作上海金瑞建设集团网站
  • 建设工程有限公司 网站免费元素素材网站
  • 网站做支付郑州官网seo
  • 做网站賺钱工业设计产品开发
  • 合肥做网站便宜wordpress调用内容代码
  • 通信工程建设网站网站建设模板系统
  • 打电话给客户怎样介绍自己是做网站的?开场白?互联网产品运营是做什么的
  • 设计企业品牌网站上海注册公司需要多少钱
  • 线上广告推广宁波优化系统
  • 苏州网站开发公司有哪些重庆网站制作系统
  • 360路由器网站建设英文定机票网站建设
  • 网页站点的建立流程泰安求职招聘网
  • 免费搭建网站的软件wordpress客户端登陆
  • 网站建设完成之后要索取哪些2013深圳网站设计公司排名
  • 如何做高网站的浏览量jsp网站空间网站开发
  • 随州网站设计开发服务网站建设编写代码出错
  • 河北地矿建设集团官方网站帮忙注册公司要多少钱