javascript - 需要用数组中右侧元素的最大值替换元素

标签 javascript arrays

我需要用属于该数组右侧元素集的最大元素替换 array 中的每个元素。我用下面的代码得到了一个解决方案:

let arr1 = [5,0,5,7,9,4,8];
var temp = [];

for (var i = 1; i < arr1.length + 1; i++)
{
    if (i !== arr1.length)
    {
        temp = [...arr1].slice(i);
        arr1[i-1] = Math.max(...temp);
    }
    else
    {
        arr1[i-1] = arr1[arr1.length - 1];
    } 
}

console.log(arr1);

有没有其他更好的解决方案来解决这个问题?您可以在下一个示例中看到预期的输出:

Input : [5,0,5,7,9,4,8]
Output: [9,9,9,9,8,8,8]

最佳答案

您可以通过向后迭代并跟踪最大值将性能提高到 O(n)(因为您当前的实现是 O(n^2)):

var arr1 = [5, 0, 5, 7, 9, 4, 8];
var max = arr1[arr1.length - 1];

for (var i = arr1.length - 1; i >= 0; i--) {
  var curr = arr1[i];
  arr1[i] = max;
  if (curr > max) max = curr;
}

console.log(arr1);

关于javascript - 需要用数组中右侧元素的最大值替换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295766/

相关文章:

javascript - Vuex `people[0] = { age: people[0].age + 1 };` 不会触发重新渲染,为什么?

javascript - 使用本地模块,使用本地依赖

javascript - 使用JavaScript将页面滚动到屏幕上的某个点(如果小于某个大小)?

Java 递归删除格式中的内容

javascript - Reduce 方法以计算具有特定键的对象值

java - 如何打印 ArrayList 中数组中的单个元素

javascript - 一个只有 CSS 的*指针*框?

javascript - 在子函数中引用 parent(this) 是不好的做法吗?

c++ - 通过指针传递数组

java - 如何在Java中计算文本文件中每个字母的出现次数?