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

更新于: 21-4-2021

86 次浏览

开启您的职业生涯

完成课程后获得认证

开始
广告