class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k) {
unordered_map<int,int> allsum;
allsum.insert(make_pair(,-));
int sum=;
for(int i=;i<nums.size();++i)
{
sum+=nums[i];
if(k)sum%=k;
auto j=allsum.find(sum);
if(j!=allsum.end())
{
if(i-j->second>)return true;
}
allsum.insert(make_pair(sum,i));
}
return false;
}
};

1

之前见过的题结果还是没搞定, 思路是没问题的,但是细节处理错导致不能ac;  本题要求连续的子数组之和是k的倍数, 看起来好像要求和, 其实是用减法来做加法,  任何一个子数组的和= 前n个数的和-前m个数的和, m<n

2

注意题目要求subarry最少2个,所以这里必须存索引, 同时需要判断当前的索引i 和 j的关系;  如果没要求2个, 可以把map换成set

3

k为0的情况, 这里有点奇怪,题目并不认为任意数是0的倍数....  但0又是0的倍数, 我也是搞不懂什么鬼, 所以不能写出if k==0 return true/false的判断

4

边界考虑, 如果前n个数组就已经符合了,但是map里面是空的! 然后就认为找不到答案..  所以记得初始化一下, key=0  value=-1, 表明前 -1 个元素的和为0

523. Continuous Subarray Sum的更多相关文章

  1. leetcode 560. Subarray Sum Equals K 、523. Continuous Subarray Sum、 325.Maximum Size Subarray Sum Equals k(lintcode 911)

    整体上3个题都是求subarray,都是同一个思想,通过累加,然后判断和目标k值之间的关系,然后查看之前子数组的累加和. map的存储:560题是存储的当前的累加和与个数 561题是存储的当前累加和的 ...

  2. [leetcode]523. Continuous Subarray Sum连续子数组和(为K的倍数)

    Given a list of non-negative numbers and a target integer k, write a function to check if the array ...

  3. 523. Continuous Subarray Sum是否有连续和是某数的几倍

    [抄题]: Given a list of non-negative numbers and a target integer k, write a function to check if the ...

  4. 523 Continuous Subarray Sum 非负数组中找到和为K的倍数的连续子数组

    非负数组中找到和为K的倍数的连续子数组 详见:https://leetcode.com/problems/continuous-subarray-sum/description/ Java实现: 方法 ...

  5. 【leetcode】523. Continuous Subarray Sum

    题目如下: 解题思路:本题需要用到这么一个数学定理.对于任意三个整数a,b,k(k !=0),如果 a%k = b%k,那么(a-b)%k = 0.利用这个定理,我们可以对数组从头开始进行求和,同时利 ...

  6. [LintCode] Continuous Subarray Sum II

    Given an integer array, find a continuous rotate subarray where the sum of numbers is the biggest. Y ...

  7. LintCode 402: Continuous Subarray Sum

    LintCode 402: Continuous Subarray Sum 题目描述 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的下标 ...

  8. Continuous Subarray Sum II(LintCode)

    Continuous Subarray Sum II   Given an circular integer array (the next element of the last element i ...

  9. [LintCode] Continuous Subarray Sum 连续子数组之和

    Given an integer array, find a continuous subarray where the sum of numbers is the biggest. Your cod ...

随机推荐

  1. Angular No name was provided for external module 'XXX' in output.globals 错误

    Angular 7 开发自定义库时,引用ngZorroAntd,build过程中出现 No name was provided for external module 'ng-zorro-antd' ...

  2. 网页Title加LOGO图标

    <link rel="icon" href="XXX.ico" type="image/x-icon"/> 只能放格式为.ico ...

  3. 显式拥塞通告(ECN)及其在Linux上的实现

    1 ECN简介 首先看看ECN握手报文的特点,根据RFC3168,ECN握手报文IP头部不能够设置ECT和CE位的 SYN报文TCP标志字段的CWR和ECE位被置1 SYN-ACK报文的CWR位被置0 ...

  4. egret中场景跳转的动画

    原理:创建一个截取当前场景的截图然后对截图进行bitmap处理加上tween.优点:无需任何图片,特效!适用于任何场景! //1.卷帘特效 //2.左右切换移动 //3.直接翻 //4.旋转掉落 // ...

  5. ABP-DDD学习

    有一个比较大的项目,打算使用 DDD +ABP +微服务 开发: 1.涉及到社交: 业务场景比较复杂:会多变: 2.采用前后端分离,netcore+vue; 3.部署采用K8S +docker 进行部 ...

  6. java应用性能分析

    dump内存信息 通过jps -lm找到进程id jmap -dump:format=b,file=./heap.hprof <pid> 使用jprofile等分析内存占用情况 dump线 ...

  7. 实现简单的ssh功能

    客户端代码: # -*- coding=utf-8 -*- __Author__ = "Dennis" import socket client = socket.socket() ...

  8. 目标检测(二) SPPNet

    引言 先简单回顾一下R-CNN的问题,每张图片,通过 Selective Search 选择2000个建议框,通过变形,利用CNN提取特征,这是非常耗时的,而且,形变必然导致信息失真,最终影响模型的性 ...

  9. 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例

    HTML5 动画在Canvas 上得到了充分的发挥,我们 VIP 视频也分享过很多相关的动画特效制作视频,这次给大家带来 6 款超炫酷的HTML5 canvas 动画的 demo,一起来看看吧~ 文内 ...

  10. C语言---指针变量详解3

    指针可以指向一份普通类型的数据,例如 int.double.char 等,也可以指向一份指针类型的数据,例如 int *.double *.char * 等.如果一个指针指向的是另外一个指针,我们就称 ...