Javascript 需要将元素替换为数组中右侧元素的最大值
我需要将Javascript 需要将元素替换为数组中右侧元素的最大值,javascript,arrays,Javascript,Arrays,我需要将数组中的每个元素替换为属于该数组中右侧元素集的max元素。我得到了一个具有以下代码的解决方案: 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);
数组中的每个元素
替换为属于该数组中右侧元素集的max元素。我得到了一个具有以下代码的解决方案:
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);
你可以用。请注意,这种方法也不会改变原始数组
设arr1=[5,0,5,7,9,4,8];
设res=arr1.map(
(n,idx,arr)=>(idx
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装器{max height:100%!important;top:0;}
您可以通过向后迭代并跟踪最大值来将性能提高到O(n)(因为您当前的实现是O(n^2)):
var arr1=[5,0,5,7,9,4,8];
var max=arr1[arr1.length-1];
对于(变量i=arr1.length-1;i>=0;i--){
var curr=arr1[i];
arr1[i]=最大值;
如果(电流>最大值)最大值=电流;
}
控制台日志(arr1)
为什么9
8
的值是8
,如果对于8
您有8
?@NinaScholz对于9
,右侧的元素集是[4,8]
,因此在这种情况下,它被它们的最大值替换为8
。而对于8
(最后一个元素),右侧没有元素,因此不会被替换。我相信,这就是背后的逻辑,至少是我所理解的。
Input : [5,0,5,7,9,4,8]
Output: [9,9,9,9,8,8,8]