정수 시퀀스가 배열로 주어지면 배열에서 요소를 하나만 제거하여 엄격하게 증가하는 시퀀스를 얻을 수 있는지 여부를 결정해야 합니다.
예를 들어 -
sequence =[1, 3, 2, 1]의 경우 출력은 function(sequence) =false여야 합니다. 이 배열에는 엄격하게 증가하는 시퀀스를 얻기 위해 제거할 수 있는 요소가 없습니다.
sequence =[1, 3, 2]의 경우 출력은 function(sequence) =true여야 합니다. 배열에서 3을 제거하여 엄격하게 증가하는 시퀀스 [1, 2]를 얻을 수 있습니다. 또는 2를 제거하여 엄격하게 증가하는 시퀀스 [1, 3]를 얻을 수 있습니다.
엄격히 증가하는 순서
모든 후속 숫자가 이전 숫자보다 큰 숫자의 배열을 나타내는 수학 용어입니다. 이 외에도 다음 요소가 이전 요소보다 크거나 같은 증가 시퀀스가 있습니다.
감소 수열과 엄격 감소 수열에도 동일한 논리가 적용됩니다.
접근
다음 요소가 선행 요소보다 큰지 여부를 확인하는 배열을 반복합니다. 더 크면 괜찮지만 더 크지 않으면(엄격히 증가하는 시퀀스를 형성하기를 원하기 때문에 더 크거나 같아야 하므로 더 크거나 같아야 하지 않습니다.) 원하지 않는 요소의 수를 유지하고 매 1씩 증가시킵니다. 시간이 발생합니다.
반복하는 동안 개수가 1을 초과하면 false를 반환하고, 그렇지 않은 경우 원하지 않는 요소 <=1로 전체를 탐색하면 true를 반환합니다.
따라서 이 함수의 코드를 작성해 보겠습니다 -
예시
const isStrictlyIncreasing = (arr) => { let unwantedElements = 0; for(let i = 0; i < arr.length - 1; i++){ if(arr[i] >= arr[i+1]){ unwantedElements++; if(unwantedElements > 1){ return false; }; }; }; return true; }; console.log(isStrictlyIncreasing([1, 3, 2, 1])); console.log(isStrictlyIncreasing([1, 3, 2]));
출력
콘솔의 출력은 -
false true