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