每天一道算法题(十)——获取和为k的子数组

文章目录

  • 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: 如果传入数组小于等于一个值,没有可以相加的数据,直接返回0
    if(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)相同文章:
每天一道算法题(八)——找出字符串中无重复字符的最长子串
每天一道算法题(九)——寻找字符串中所有字母异位词的子串

你可能感兴趣的:(算法题目汇总,算法)