Java实现 LeetCode 523 连续的子数组和(ง •_•)ง
2023-09-14 08:58:04 时间
523. 连续的子数组和
给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。
示例 1:
输入: [23,2,4,6,7], k = 6
输出: True
解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。
示例 2:
输入: [23,2,6,4,7], k = 6
输出: True
解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。
说明:
数组的长度不会超过10,000。
你可以认为所有数字总和在 32 位有符号整数范围内。
PS:
当求是他的倍数的时候根据余数求
测试用例0 0是个烦人的点
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
if(nums.length < 2) return false;
for(int i = 0; i < nums.length-1; ++i)
if(nums[i] == 0 && nums[i+1] == 0) return true;
if(k == 0) return false;
if(k < 0) k = -k;
Map<Integer, Integer> map = new HashMap<>();
map.put(0, -1);
int sum = 0;
for(int i = 0; i < nums.length; ++i) {
sum += nums[i];
int mod = sum % k;
if(map.containsKey(mod)) {
if(i-map.get(mod) > 1)
return true;
}
else // 不存在再更新
map.put(mod, i);
}
return false;
}
}
相关文章
- java对象组声明_如何在Java中声明对象数组?
- java map 二维数组_Java二维数组实现简单Map
- java calendar 设置小时_Java Calendar.set 方法设置时间的问题
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- java打印数组_Java中打印数组的三种方式
- java中applet是什么意思_Java Applet与Java Application的区别
- java启动器_JAVA基础:Java 启动器如何查找类
- 安卓java游戏模拟器_Java手机游戏模拟器
- java后端开发需要学什么_从事Java后端开发,要学习哪些知识和技能?[通俗易懂]
- java数组去重_JAVA数组去重常用方法
- java运行环境配置(jdk配置)Java博客 2 年前 桃李Taoli
- 【leetcode速通java版】01——数组入门
- java 数字信封_【Java密码学】使用Bouncy Castle生成数字签名、数字信封
- 【JAVA】Java 日志打印规范
- 【错误记录】IntelliJ IDEA 中 Java 代码中的中文注释报错 ( Menu / File / Settings / Editor / File Encodings 中修改工程编码 )
- Java学习笔记之九java二维数组及其多维数组的内存应用拓展延伸详解编程语言
- Linux环境下编译Java程序的指南(linux编译java)
- 新手进阶:从Java开发到Linux系统架构(java转linux)
- 更新LINUX下的Java版本(linux更新java)
- Oracle与Java: 未来前瞻(oracle与java)
- Java编程操作Oracle数据库(java操作oracle)
- 利用java操作redis实现数据过期(redisjava过期)
- Java运行在Linux系统上免费下载(linux java下载)
- 使用Java去连接MySQL数据库(java jdbc mysql)
- 实现基于Redis的分布式锁Java实现(redis锁java代码)