Increasing Sequence
เรากำหนดอาร์เรย์ว่าเป็น increasing ถ้า arr[i] <= arr[i + 1] สำหรับทุก i (0-based) ที่ (0 <= i <= n - 2)
ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์เดียว
ฟังก์ชันควรตัดสินใจว่าเราสามารถแปลงอาร์เรย์นี้เป็น increasing array ได้โดยแก้ไขสมาชิกได้สูงสุด 1 ตัว
ถ้าทำได้คืน true มิฉะนั้น false
ตัวอย่างเช่น หากอินพุตคือ
Input
const arr = [8, 3, 3, 7, 9];
Output
const output = true;
คำอธิบายผลลัพธ์
เพราะเราสามารถแทนที่ 8 ที่ index 0 ด้วย 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