3 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
您只需要檢查startis 是否小于 then end。另一個(gè)檢查是多余的,因?yàn)樵趀nd達(dá)到零之前,循環(huán)停止。
function reverseArrayInPlace(array) {
for (let start = 0, end = array.length - 1; start < end; start++, end--) {
let x = array[start];
array[start] = array[end];
array[end] = x;
}
return array;
}
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
reverseArrayInPlace(nums);
console.log(nums);

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
此代碼將每對(duì)元素交換兩次:一次 whenstart < end和一次 when start > end。在您的 if 語(yǔ)句中,您想將中斷條件更改為start < endand not start < array.length。
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function reverseArrayInPlace(array) {
for (let start = 0, end = array.length - 1; start < end; start++, end--) {
let x = array[start];
array[start] = array[end];
array[end] = x;
}
return array;
}
reverseArrayInPlace(nums);
console.log(nums);

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
只要數(shù)組中的值是整數(shù),就可以執(zhí)行按位異或 (XOR) 而無(wú)需臨時(shí)變量。你也可以用一個(gè)控制變量來(lái)做到這一點(diǎn),即i。時(shí)間復(fù)雜度為 O(n/2)。
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function reverseIntArrayInPlace(arr) {
for (let i = 0; i < Math.floor(arr.length / 2); i++) {
arr[i] = arr[i] ^ arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = arr[i] ^ arr[arr.length - 1 - i];
arr[i] = arr[i] ^ arr[arr.length - 1 - i];
}
return arr;
}
console.log(reverseIntArrayInPlace(nums));
.as-console-wrapper { top: 0; max-height: 100% !important; }
如果你想交換其他類型,那么你將需要一個(gè)臨時(shí)變量。
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function reverseArrayInPlace(arr) {
for (let i = 0; i < Math.floor(arr.length / 2); i++) {
const tmp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = tmp;
}
return arr;
}
console.log(reverseArrayInPlace(nums));
.as-console-wrapper { top: 0; max-height: 100% !important; }
添加回答
舉報(bào)