文章目录
- 1、问题
- 2、示例
- 3、解决方法
- (1)方法1——双指针
- 总结
1、问题
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
2、示例
示例 1:
输入:nums = [1,1,1], k = 2
输出:2
示例 2:
输入:nums = [1,2,3], k = 3
输出:1
3、解决方法
(1)方法1——双指针
let nums = [1,1,1], k = 3
var subarraySum = function(nums, k) {// 1-1:定义左右指针let left =0;right = 1;// 1-2:存储获取左指针的下标(右指针也可以,因为需求是返回个数)let arr = [];// 2: 如果传入数组小于等于一个值,没有可以相加的数据,直接返回0if(nums.length<=1) return 0;// 3: 判断右指针 小于等于 数组长度结束循环while(right <= nums.length) {// 4-1:如果左右指针为下标对于数组的值 等于 整数k if(nums[left] + nums[right] == k) {// 4-2:将符合条件的下标存储起来arr.push(left)}// 4-2 左右指针都自增left++;right++;}// 5;返回符合条件的长度console.log('返回数组和为k的子数组的个数', arr.length);
};
subarraySum(nums, k);
总结
(1)难度: 中等
(2)相同文章:
每天一道算法题(八)——找出字符串中无重复字符的最长子串
每天一道算法题(九)——寻找字符串中所有字母异位词的子串