博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode]523. Continuous Subarray Sum
阅读量:4445 次
发布时间:2019-06-07

本文共 968 字,大约阅读时间需要 3 分钟。

从数组中找到子串的和是给定值得倍数

哈希表法的精髓就是,到ab两个位置的和对target取余结果一样的话,ab之间的和肯定是target的整数倍

public boolean checkSubarraySum(int[] nums, int k) {        int l = nums.length;        /*        两种方法,动态规划和哈希表        动态规划就是把长度为2-数组size的所有情况的所有组合遍历一遍        dp[i]代表以i开头的组合,外层循环是len,dp[i]更新用上次的加上当前元素        哈希表更快        遍历整个数组,依次加当前数组元素并将相加和求余k,求余结果只有0~k-1这k中情况,        将求余结果存入Hash Table中。        如果遍历到当前位置求余结果已经在Hash Table中,        表明从上一求余结果相同的位置到当前位置的子数组相加和是k的倍数,        否则将求余结果存入Hash Table。         */        Map
map = new HashMap<>(); //k=0的情况,假设-1位置有一个0 map.put(0,-1); int sum = 0; for (int i = 0; i < l; i++) { sum+=nums[i]; if (k!=0) sum%=k; if (map.containsKey(sum)) { if (i-map.get(sum)>1) return true; } else { map.put(sum,i); } } return false; }

 

转载于:https://www.cnblogs.com/stAr-1/p/8491770.html

你可能感兴趣的文章
Django Rest Framework-介绍
查看>>
文件夹的创建(cmd利用)
查看>>
福大软工 · 真 · 最终作业
查看>>
2018.08.10 atcoder No Need(线性dp)
查看>>
css3 动画
查看>>
数组转对象
查看>>
扫描目录下的文件并拼接在一起
查看>>
ELK 分布式日志处理 10.12
查看>>
Java虚拟机详解05----垃圾收集器及GC参数
查看>>
7. 单位,移动布局
查看>>
inux中bin与sbin目录的作用及区别介绍
查看>>
USACO 3.1 Contact
查看>>
Office之什么是高内聚低耦合
查看>>
一些奇怪的问题求回答
查看>>
这些年踩过的坑
查看>>
iOS开发拓展篇——如何把项目托管到GitHub
查看>>
性能优化之数据库优化
查看>>
类的继承、菱形继承、派生、多态
查看>>
mysql约束
查看>>
javascript鼠标及键盘事件总结及案例
查看>>