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

ความยาวของอาร์เรย์ที่ไม่เรียงลำดับที่สั้นที่สุดใน JavaScript


ปัญหา

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

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

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

const arr = [3, 7, 5, 9, 11, 10, 16];

จากนั้นผลลัพธ์ควรเป็น −

const output = 5;

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

เพราะถ้าเราจัดเรียง [7, 5, 9, 11, 10] ทั้งอาร์เรย์จะถูกจัดเรียง

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [3, 7, 5, 9, 11, 10, 16];
const shortestLength = (arr = []) => {
   const sorted = [...arr].sort((a, b) => a - b)
   let start = 0
   let end = sorted.length - 1
   while (sorted[start] === arr[start] && start < arr.length) {
      start += 1
   }
   while (sorted[end] === arr[end] && end >= 0) {
      end -= 1
   }
   return end >= start ? end - start + 1 : 0
}
console.log(shortestLength(arr));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

5