Computer >> Máy Tính >  >> Lập trình >> Javascript

Độ dài của mảng không được sắp xếp ngắn nhất trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta cần tìm độ dài của một mảng con liên tục sao cho nếu chúng ta chỉ sắp xếp mảng con này theo thứ tự tăng dần, thì toàn bộ mảng cũng sẽ được sắp xếp theo thứ tự tăng dần.

Ví dụ:nếu đầu vào của hàm là -

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

Sau đó, đầu ra phải là -

const output = 5;

Giải thích đầu ra

Bởi vì nếu chúng ta sắp xếp [7, 5, 9, 11, 10], toàn bộ mảng sẽ được sắp xếp.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

5