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

JavaScript에서 배열을 증가하는 시퀀스로 변환

<시간/>

증가 시퀀스

arr[i] <=arr[i + 1]이 (0 <=i <=n - 2)와 같은 모든 i(0부터 시작)에 대해 유지되는 경우 배열을 증가하는 것으로 정의합니다.

문제

첫 번째이자 유일한 인수로 정수 배열 arr을 취하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 배열의 최대 하나의 요소를 수정하여 이 배열을 증가하는 배열로 변환할 수 있는지 여부를 결정해야 합니다.

그렇게 할 수 있으면 true를, 그렇지 않으면 false를 반환해야 합니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const arr = [8, 3, 3, 7, 9];

출력

const output = true;

출력 설명

원하는 배열을 얻기 위해 인덱스 0의 8을 1 또는 2로 바꿀 수 있기 때문입니다.

예시

다음은 코드입니다 -

const arr = [8, 3, 3, 7, 9];
   const canConvert = (arr = []) => {
      const find = () => {
         for (let i = 1; i < arr.length; i++) {
            if (arr[i] < arr[i - 1]) {
               return false
            }
         }
         return true
      }
      for (let i = 0; i < arr.length; i++) {
         if (arr[i] < arr[i - 1]) {
            const temp = arr[i]
            arr[i] = arr[i - 1]
            if (find(arr)) {
               return true
            }
            arr[i] = temp
            arr[i - 1] = arr[i]
            return find(arr)
      }
   }
   return true
}
console.log(canConvert(arr));

출력

true