Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuyển đổi mảng thành chuỗi tăng dần trong JavaScript

Tăng trình tự

Chúng tôi định nghĩa một mảng là tăng nếu arr [i] <=arr [i + 1] giữ cho mọi i (dựa trên 0) sao cho (0 <=i <=n - 2).

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các số nguyên, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta sẽ xác định xem chúng ta có thể chuyển đổi mảng này thành một mảng tăng dần hay không bằng cách sửa đổi nhiều nhất một phần tử của mảng.

Nếu chúng ta có thể làm như vậy, chúng ta nên trả về true, ngược lại là false.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

const output = true;

Giải thích đầu ra

Bởi vì chúng ta có thể thay thế 8 ở chỉ mục 0 bằng 1 hoặc 2 để có được mảng mong muốn.

Ví dụ

Sau đây là mã -

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));

Đầu ra

true