zoukankan      html  css  js  c++  java
  • leetcode每日一题(2020-05-27):974. 和可被 K 整除的子数组

    题目描述:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。

    今日学习:
    1.前缀和
    2.同余
    3.自建CA证书


    每日参考小天使

  • 首先要理解前缀和:前n项和
  • 然后理解取余相同的前缀和相减就是目标子数组:
  • 还要理解取余为0的时候初始化应该为1,因为只要取余为0就已经符合条件了,不需要有两个相同的相减
  • 题解1:数组 ```javascript var subarraysDivByK = function(A, K) { let map = new Array(K).fill(0) map[0] = 1 let preSum = count = 0 for(let i = 0; i < A.length; i++) { preSum = ((A[i] + preSum) % K + K) % K count += map[preSum] map[preSum]++ } return count }; ``` 题解2:map ```javascript var subarraysDivByK = function(A, K) { let map = { 0: 1 } // 为了让边界情况也能适用通式 let preSum = 0 // 保存前缀和模K的结果,初始值0 let count = 0 // 计数 for (let i = 0; i < A.length; i++) { // 一次遍历做完所有事 preSum = (preSum + A[i]) % K // 上一次的前缀和累加当前项,再mod if (preSum < 0) preSum += K // 处理preSum为负数的情况,需要加 K if (map[preSum]) { // 之前存过的 与当前preSum相等的key count += map[preSum] // 把它出现的次数累加给count } if (map[preSum]) { // 以前存过,出现次数+1 map[preSum]++ } else { // 新存入,初始值1 map[preSum] = 1 } } return count // 返回计数结果 }; ```
查看全文
  • 相关阅读:
    使用uWSGI+Nginx+Supervisor部署管理Django应用程序
    Django REST framework使用ViewSets的自定义路由实现过程
    【转】nginx配置:location配置方法及实例详解
    Python模块的动态加载机制
    【转】Django中的request与response对象
    【转】Django Middleware
    【转】请求处理机制其三:view层与模板解析
    朝花夕拾
    买了台robosense的激光雷达,待开箱
    热力学量微分关系式总结+助记 Lebal:Research
  • 原文地址:https://www.cnblogs.com/autumn-starrysky/p/12972030.html
  • Copyright © 2011-2022 走看看