Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

แปลงอาร์เรย์เป็น Increasing Sequence ใน JavaScript


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