Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

엄격하게 증가하는 시퀀스 JavaScript

<시간/>

정수 시퀀스가 ​​배열로 주어지면 배열에서 요소를 하나만 제거하여 엄격하게 증가하는 시퀀스를 얻을 수 있는지 여부를 결정해야 합니다.

예를 들어 -

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