Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm độ dài mảng con chưa sắp xếp ngắn nhất trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số duy nhất. Hàm phải tìm độ dài của một mảng con liên tục sao cho nếu 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 là:

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

Thì đầu ra sẽ là:

const output = 5;

Giải thích kết quả

Vì nếu sắp xếp mảng con [7, 5, 9, 11, 10] thì toàn bộ mảng sẽ được sắp xếp.

Ví dụ

Dưới đây là mã thực hiện:

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

Kết quả

Đầu ra trên console:

5