連続部分数列2
1071 ワード
私の答え(正解x)めちゃくちゃ
function solution(m, arr) {
let answer = 0, lt = 0, sum = 0;
for(let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
if(sum <= 5) {
answer++;
}
while(sum > 5) {
sum -= arr[lt++];
if(sum <= 5) answer++;
}
if(rt === arr.length-1) { // rt의 마지막 수에서 lt를 하나씩 뺐을 때 5이하면 증가하려고 했는데..
while(lt !== arr.length-1){
sum -= arr[lt++];
if(sum <= 5) answer++;
}
}
}
return answer;
}
let arr = [1,3,1,2,3];
console.log(solution(5, arr));
正解function solution(m, arr) {
let answer = 0, lt = 0, sum = 0;
for(let rt = 0; rt < arr.length; rt++) {
sum += arr[rt];
while(sum > m) {
sum -= arr[lt++];
}
answer += (rt-lt+1);
// 1과 3이 누적된 4가 있다면 4는 1,3의 합인걸 이용한 식
}
return answer;
}
let arr = [1,3,1,2,3];
console.log(solution(5, arr));
Reference
この問題について(連続部分数列2), 我々は、より多くの情報をここで見つけました https://velog.io/@_jackson/연속부분수열2Two-Pointers-Algorithmテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol