📌  相关文章
📜  查找小于其右侧所有元素的所有 Array 元素(1)

📅  最后修改于: 2023-12-03 15:26:37.702000             🧑  作者: Mango

题目描述

给定一个数组,找到其中所有元素,使它的值都小于它在数组中的右侧所有元素的值。

解决方案

我们可以从右到左遍历整个数组,维护一个最大值,若当前位置的值小于最大值,则说明它的值小于它右侧的所有元素。将该元素放入一个新数组中即可。

function findElements(arr) {
  let max = null;
  let res = [];
  for (let i = arr.length - 1; i >=0; i--) {
    if (max === null || arr[i] < max) {
      max = arr[i];
      res.unshift(max);
    }
  }
  return res;
}
测试用例
findElements([3, 2, 5, 8, 1, 4, 7, 6]) // [1, 4, 6]
findElements([5, 4, 3, 2, 1]) // [1]
findElements([1, 2, 3, 4, 5]) // [1, 2, 3, 4, 5]
时间复杂度

该算法只需一次遍历,所以时间复杂度为 O(n)。

空间复杂度

该算法只需要一个数组作为临时存储,所以空间复杂度为 O(n)。