case1: 暴力法

class Solution {/**/public int subarraySum(int[] nums, int k) {int len = nums.length;if(len<=0) return 0;int res = 0;for(int start=1;start<len;start++){int sum = 0;for(int j=start;j<len;j++){sum+=nums[j];//注意这里不能跳出循环,因为当序列长度不同时为不同的序列if(sum==k){res++;}}}return res;}
}

CASE2:改进暴力法
构建一个memo(这里memo借助Map实现,因为无法预估和的大小所有使用数组来实现)用于记录能索引0开始的能构成和为sum的子序列的个数
当当前从下标0开始构造子序列A的和为sum时,且前面有从0开始构造的和为sum-k的子序列B,那么,夹在这两个子序列之间的序列必为和为k的子序列!!!【因为A,B是共起点的!!!且因为sum=(sum-k)+k)】
所以有几个序列的和为sum-k,就有几个子序列的和为k
然后只需要将这些所有组合进行一个累加即可

class Solution {public int subarraySum(int[] nums, int k) {int len = nums.length;if(len<=0) return 0;int res = 0;int sum = 0;//memo用于记录能索引0开始的能构成和为sum的子序列的个数Map<Integer,Integer> memo = new HashMap<>();//当子序列为空时,其和必为0,所以能构成和为0的子序列数至少是1memo.put(0,1);for(int j=0;j<len;j++){sum+=nums[j];//累积所有的结果,而且要注意以下这个if和下面那个put操作的先后顺序if(memo.containsKey(sum-k)){res+=memo.get(sum-k);}memo.put(sum,memo.getOrDefault(sum,0)+1);}return res;}
}

T560和为k的子数组相关推荐

  1. LeetCode 937. 重新排列日志文件 / 1823. 找出游戏的获胜者(约瑟夫环问题) / 713. 乘积小于 K 的子数组

    937. 重新排列日志文件 2022.5.3 每日一题 题目描述 给你一个日志数组 logs.每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 . 有两种不同类型的日志: 字母日志: ...

  2. LeetCode 713、乘积小于 K 的子数组

    713.乘积小于 K 的子数组 1)题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目. 示例 1: 输入:nums = [10,5 ...

  3. 0505|713. 乘积小于 K 的子数组

    0505|713. 乘积小于 K 的子数组 mid 滑动窗口. 求连续子树组的个数,"连续子树组"很强的暗示---使用滑动窗口. 本题只需记录 以每个数字为右边界所形成的有效子数组 ...

  4. LeetCode713. 乘积小于K的子数组

    LeetCode713. 乘积小于K的子数组 1. 问题描述 2. 思路 经典双指针问题 3. 代码 func numSubarrayProductLessThanK(nums []int, k in ...

  5. Leetcode--713. 乘积小于k的子数组

    给定一个正整数数组 nums. 找出该数组内乘积小于 k 的连续的子数组的个数. 示例 1: 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小于100的子数 ...

  6. 【LeetCode笔记】560. 和为K的子数组(Java、前缀和、哈希表)

    文章目录 题目描述 思路 & 代码 暴力法 O(n2n^2n2) 前缀和 + 哈希表 O(n) 二刷 题目描述 第一道前缀和题目- 思路 & 代码 暴力法 O(n2n^2n2) 固定一 ...

  7. 20191021:(leetcode习题)乘积小于K的子数组

    乘积小于K的子数组 题目 大致思路 代码实现 题目 给定一个正整数数组 nums.找出该数组内乘积小于 k 的连续的子数组的个数. 输入: nums = [10,5,2,6], k = 100 输出: ...

  8. 力扣 713. 乘积小于K的子数组

    题目 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 输入: nums = [10,5,2,6], k = 100 输出: 8 解释: 8个乘积小 ...

  9. LeetCode 713 乘积小于K的子数组

    写在前面 一道很艺术的编程题~做学习记录 题目描述 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 示例1: 输入: nums = [10,5,2 ...

最新文章

  1. .NET WinForm中给DataGridView自定义ToolTip并设置ToolTip的样式
  2. 蓝桥杯-c++_ch04_02_修正版(java)
  3. redhat6.5 yum register 问题
  4. 算法模板-广度优先遍历
  5. 【渝粤教育】 国家开放大学2020年春季 1366英语教学理论与实践 参考试题
  6. iOS:×××送(二)----pem证书的生成
  7. tomcat中三种部署项目的方法(转)
  8. JavaScript数组的声明及使用(1)
  9. ERP知识普及连载(13)
  10. 转:初学shell脚本--shell语法使用
  11. logistic映射图像加密matlab,基于Logistic映射与排序变换的图像加密算法
  12. c++ primer kindle_开箱测评掌阅iReader Ligtht悦享版阅读器,电纸书不止有kindle
  13. 海德汉圆光栅编码器RON786C/RON886C/RON785C/RPN886/RON285/RON287/RON275参数针脚定义
  14. +new Date是什么意思?
  15. 详细分析本机号码一键登录原理!建议收藏
  16. TN和STN的液晶屏制作流程以及工艺介绍
  17. 信雅达,一家不尊重应聘者的公司
  18. STRM--用Oracle Streams wizard生成配置脚本
  19. 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗?畅言普通话准确度介绍...
  20. 角速度与旋转矩阵的转换关系及思考

热门文章

  1. 大华linux密码忘记,乌班图16.04 安装DSS正确方法(已验证安装成功)
  2. JVM中的垃圾回收机制
  3. android 美颜滤镜效果的实现
  4. 前端布局 Flex(弹性)布局
  5. ps切图,学成案例开头。。。。。
  6. 数据分析实例-餐饮行业分析
  7. php如何获取服务器的信息,PHP获取当前服务器详细信息
  8. dw怎么把html页面居中,dw怎么把所有内容居中
  9. 长假还没安排?这7本书和7部影视作品,让你宅家或者堵在路上都一样精彩
  10. 基于RFID定位技术的工地人员定位--新导智能