れんぞくぶんすうれつ
質問する
マイコード
let N = 8;
let M = 6;
let arr = [1,2,1,3,1,1,1,2];
----------------------------------
let p1=0;
let p2=1;
let sum = arr[p1] + arr[p2];
let cnt = 0;
while(p1<N && p2<N){
if(sum < M){
sum += arr[p2+1];
p2++;
}
else if(sum === M){
cnt++;
sum -= arr[p1];
p1++
sum += arr[p2+1];
p2++
}
else{
sum -= arr[p1];
p1++;
}
}
console.log(cnt);
n/a原理
別の解釈
let n = 8;
let m = 6;
let arr = [1,2,1,3,1,1,1,2];
----------------------------------
let answer=0, lt=0, sum=0;
for(let rt=0; rt<arr.length; rt++){
sum+=arr[rt];
if(sum===m) answer++;
while(sum>=m){
sum-=arr[lt++]; //[lt++]는 sum-=arr[lt]를 한 후 lt++를 해준다는 뜻이다.
if(sum===m) answer++;
}
}
console.log(answer);
n/a原理
「>=」と言うのはsum==mならltも移動するからです.
Reference
この問題について(れんぞくぶんすうれつ), 我々は、より多くの情報をここで見つけました https://velog.io/@minho100227/연속부분수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol