js實現陣列移動零 力扣

2021-10-06 10:13:42 字數 1232 閱讀 5490

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例:輸入: [0,1,0,3,12]

輸出: [1,3,12,0,0]

說明:必須在原陣列上操作,不能拷貝額外的陣列。

儘量減少操作次數。

我們建立兩個指標i和j,第一次遍歷的時候指標i用來記錄當前有多少非0元素。即遍歷的時候每遇到乙個非0元素就將其往陣列左邊挪,第一次遍歷完後,i

指標的下標就指向了第乙個為

0元素。

第二次遍歷的時候,只要i小於陣列長度,對應位置設為0。

時間複雜度:o(n)

空間複雜度:o(1)

在1)的基礎上,在第一層迴圈裡面加乙個判斷,i!==j,為true,j對應的位置需要賦值為0

/**

* @param arr

* @return

* 功能:陣列中移動零到最後

* 方法:雙指標,兩次迴圈(不是巢狀),一次將非0移到前面,一次將後面設定為0

*/var movezeroes = function(arr)

"11");

let len = arr.length;

let i = 0;//i也是陣列遍歷指標,為新陣列遍歷指標,前期指向非0項,後期才指向0項??

for(let j = 0; j < len; j++)

}while(i < len)

"11");

return arr;

};/**

* @param arr

* @return

* 功能:陣列中移動零到最後

* 方法:雙指標,一次迴圈,時間優化,只要i!== j,arr[j]賦值為0

*/var movezeroes_2 = function(arr)

"11");

let len = arr.length;

let i = 0;//i也是陣列遍歷指標,為新陣列遍歷指標,前期指向非0項,後期才指向0項??

for(let j = 0; j < len; j++)

i++;}}

"11");

return arr;

};console.log(movezeroes([0,1,0,3,12]));

console.log(movezeroes_2([0,1,0,3,12]));

參考:力扣

百里於2023年5月23日

力扣移動零

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。下面展示一些內聯 片。a code block var foo bar clas...

力扣日記 移動零

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 題解 1.雙指標方法 分別定義兩個索引從0開始,i指向當前已經處理好的序列的尾部,j指向待處理序列的頭部。j不斷向右移動,每次j指向非零數,則將...

力扣日記 283 移動零

給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。方法一 class solution def movezeroes self,n...