1 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
這個(gè)其實(shí)很簡單的,以空間換時(shí)間,先翻轉(zhuǎn),然后連拼3個(gè),再計(jì)算之前的最大值所在的位置,進(jìn)行新數(shù)組的切割。
最大的性能消耗在getmax上。
var test = [
[1, 0, 4, 3, 2],
[0, 4, 3, 2, 1],
[4, 3, 2, 1, 0],
[3, 2, 1, 0, 4]
];
test.forEach(arr => console.log(reversal(arr)));
// 反轉(zhuǎn)
function reversal(arr) {
let len = arr.length;
// get max
let max = arr[0];
let index = 0;
arr.forEach((v, i) => {
if (v <= max) return;
max = v;
index = i;
});
// strat re
let tmp = arr.reverse().concat(arr, arr);
let newIndex = len - 1 - index + len;
return tmp.slice(newIndex - index, newIndex + len - index);
}
添加回答
舉報(bào)