Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การแปลงอาร์เรย์เป็นลำดับที่เพิ่มขึ้นใน JavaScript


เพิ่มลำดับ

เรากำหนดอาร์เรย์ว่าเพิ่มขึ้นหาก arr[i] <=arr[i + 1] มีค่าสำหรับทุก ๆ i (0-based) เช่นนั้น (0 <=i <=n - 2)

ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

ฟังก์ชันของเราควรกำหนดว่าเราสามารถแปลงอาร์เรย์นี้เป็นอาร์เรย์ที่เพิ่มขึ้นโดยแก้ไขอย่างน้อยหนึ่งองค์ประกอบในอาร์เรย์ได้หรือไม่

หากเราทำได้เราควรคืนค่าจริงเท็จมิฉะนั้น

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ

ป้อนข้อมูล

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

ผลผลิต

const output = true;

คำอธิบายผลลัพธ์

เพราะเราสามารถแทนที่ 8 ที่ดัชนี 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