Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Dãy tăng dần

Chúng ta định nghĩa một mảng là tăng dần nếu arr[i] <= arr[i + 1] đúng với mọi i (0-based) sao cho (0 <= i <= n - 2).

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr làm đối số duy nhất.

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

Nếu có thể, trả về true, ngược lại 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

Vì chúng ta có thể thay thế 8 ở chỉ số 0 bằng 1 hoặc 2 để có mảng mong muốn.

Ví dụ

Dưới đâ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