最大ローカル増分数列
5973 ワード
質問する
code
function solution(arr){
let answer =0;
let dy= Array.from({length:arr.length}, ()=> 0);
dy[0]=1;
for(let i=1; i<arr.length; i++){
let max =0;
for(let j=i-1; j>=0; j--){
if(arr[j]<arr[i] && dy[j]>max){
max = dy[j]
}
}
dy[i]= max+1;
answer = Math.max(answer, dy[i]);
}
return answer;
}
let arr=[5, 3, 7, 8, 6, 2, 9, 4];
console.log(solution(arr));
n/a原理
注意事項
なぜmax=0に初期化するのか
前述したようにmaxを0に初期化しないとmax=3になる.
従ってarr[i]=4であり、これよりも小さい数arr[j]のdy[j]=1であるためmax>dy[j]である.
だからdy[i]の値を求めることはできません.
Reference
この問題について(最大ローカル増分数列), 我々は、より多くの情報をここで見つけました https://velog.io/@minho100227/최대-부분-증가수열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol