JavaScript 中至少包含兩個元素的子陣和
問題
我們需要編寫一個 JavaScript 函式,其中第一個引數是包含整數的陣列 arr,第二個引數是單個整數 target。我們的函式應檢查是否存在大小至少為 2 的連續子陣列,其和為 k 的倍數,即和為 n*k,其中 n 可以是任意整數。
如果存在,則返回 true,否則返回 false。
例如,如果函式的輸入是 -
const arr = [23, 2, 6, 4, 7]; const target = 6;
則輸出應為 -
const output = true;
輸出說明
因為 [23, 2, 6, 4, 7] 是大小為 5 的連續子陣列,且和為 42。
示例
程式碼如下 -
const arr = [23, 2, 6, 4, 7];
const target = 6;
const checkSubarraySum = (arr = [], target = 1) => {
let sum = 0
const hash = {}
hash[0] = -1;
for (let i = 0; i<arr.length; i++) {
sum += arr[i]
if (target!=0) sum %= target
if ( hash[sum] !== undefined ) {
if(i-hash[sum]>1) return true
} else {
hash[sum] = i
}
};
return false;
};
console.log(checkSubarraySum(arr, target));輸出
控制檯中的輸出將為 -
true
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP