文章目錄
- 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)相同文章:
每天一道算法題(八)——找出字符串中無重復字符的最長子串
每天一道算法題(九)——尋找字符串中所有字母異位詞的子串