我有一个数组需要将其反转,下面是列子,需要注意的最大值4的位置不能变,然后将最大值前面与后面的值分别重新倒置编排进去,数学不太好,求助大家帮忙
var arr = [1, 0, 4, 3, 2];
反转为
var arr = [2, 3, 4, 0, 1];
var arr = [0, 4, 3, 2, 1];
反转为
var arr = [3, 4, 0, 1, 2];
var arr = [4, 3, 2, 1, 0];
反转为
var arr = [4, 0, 1, 2, 3];
var arr = [3, 2, 1, 0, 4];
反转为
var arr = [0, 1, 2, 3, 4];
谢邀。
这个其实很简单的,以空间换时间,先翻转,然后连拼3个,再计算之前的最大值所在的位置,进行新数组的切割。
最大的性能消耗在getmax上。
这样就可以了
var arr = [3, 2, 1, 0, 4];
var max = arr[0]; //最大值
for(var i=1;i<arr.length;i++){
if(max<arr[i])max=arr[i];
}
var index = arr.indexOf(max);//最大值下标
arr.splice(index,1);//删除最大值
arr.reverse();//倒叙数组 也可按照你自己的排序规则自己排序
arr.splice(index,max,max);//指定位置添加元素
console.log(arr);
第一个方法
//PHP
1 reduce获取到最大值的index
2 splice将最大值从原数组中移除
3 reverse将数组翻转
4 将最大值放回原位置
第二个例子没看懂,如果最大值不在数组的中央应该按照什么规则反转?
Java8可以这么做
谢邀,我来晚了。问题已解决,我就赞一下吧
谢邀。之前没看到。顺手赞个。