非负数组中找到和为K的倍数的连续子数组

详见:https://leetcode.com/problems/continuous-subarray-sum/description/

Java实现:

方法一:

class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
for(int i=0;i<nums.length;++i){
int sum=nums[i];
for(int j=i+1;j<nums.length;++j){
sum+=nums[j];
if(sum==k){
return true;
}
if(k!=0&&sum%k==0){
return true;
}
}
}
return false;
}
}

方法二:

class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
if(nums==null){
return false;
}
HashSet<Integer> sums=new HashSet<>();
int sum=0;
for(int i=0;i<nums.length;++i){
sum+=nums[i];
if((k!=0&&sums.contains(sum%k))||(i!=0&&sum==k)){
return true;
}else if(k!=0){
sums.add(sum%k);
}
}
return false;
}
}

方法三:用HashMap保存sum对k取余数,如果前序有余数也为sum%k的位置,那么就存在连续子数组和为k的倍数。

class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
Map<Integer,Integer> map=new HashMap<Integer,Integer>(){{put(0,-1);}};
int sum=0;
for(int i=0;i<nums.length;++i){
sum+=nums[i];
if(k!=0){
sum%=k;
}
Integer prev=map.get(sum);
if(prev!=null){
if(i-prev>1){
return true;
}
}else{
map.put(sum,i);
}
}
return false;
}
}

C++:

方法一:

class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k)
{
for (int i = 0; i < nums.size(); ++i)
{
int sum = nums[i];
for (int j = i + 1; j < nums.size(); ++j)
{
sum += nums[j];
if (sum == k)
{
return true;
}
if (k != 0 && sum % k == 0)
{
return true;
}
}
}
return false;
}
};

方法二:

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

参考:http://www.cnblogs.com/grandyang/p/6504158.html

最新文章

  1. Git各大平台(win/Linux/Mac)图形化界面客户端大汇总
  2. sys
  3. rt—移植笔记1
  4. 开发《基于Arcgis Online的家政管理服务信息系统》随笔2
  5. Problem 1274 - 可怜的lpx
  6. PHP页面静态化入门
  7. web字体格式及几种在线格式转换工具介绍
  8. VS的工程宏,比如$(SolutionDir) 的含义及查找
  9. MAC apache 2.4 启用目录访问
  10. Javascript闭包(Closure)
  11. 【原创】大数据基础之Logstash(4)高可用
  12. sqlServer:行列转换之多行转一行
  13. react-navigation 简介
  14. 结对编程ending-我和洧洧的碎碎念
  15. Halcon知识点随记(每日更新)
  16. Scrapy 框架 使用 selenium 爬取动态加载内容
  17. BZOJ3286 Fibonacci矩阵 矩阵 快速幂 卡常
  18. DFS例题
  19. sun.misc.BASE64Decoder 限制取消
  20. Python图形编程探索系列-07-程序登录界面设计

热门文章

  1. 赵雅智_SimpleCursorAdapter
  2. leetcode笔记:Pascal&amp;#39;s Triangle
  3. java8--面向对象 上(疯狂java讲义3) 复习笔记
  4. Writing a Discard Server
  5. python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题
  6. POJ2155 Matrix 二维线段树
  7. CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow
  8. ossfs常见配置错误
  9. Why you shouldn’t connect your mobile application to a database
  10. 关于O_DIRECT的那些事儿