while 进行三次逆置
function _reserve(a: any, m = 4, n = 2) {
// 判断当m或者n的长度是否为0时
if (m == 0 || n == 0) return a
function _res(A: any, s: number, e: number) {
/*
s 参数表示开始的索引位置,
e 表示结束的索引位置
**/
while (e - s >= 0) {
if (A[s] !== A[e]) {
console.log(1);
let t = A[s]
A[s] = A[e]
A[e] = t
}
s++;
e--
}
}
// 全逆置 (0,5)
_res(a, 0, m + n - 1)
if (n !== 1) _res(a, 0, n - 1)
if (m !== 1) _res(a, n, m + n - 1)
return a
}
console.log(_reserve(['d','w','as','dsa','w'], 1, 4)); // 返回 [6, 9, 1, 2, 5, 4]
js方法
function _reserve(arr: any, m: number, n: number) {
return arr.slice(m).concat(arr.slice(0, m))
}