從陣列中移除數字並移動剩餘元素 JavaScript
在這個問題陳述中,我們的任務是編寫一個函式,利用 Javascript 功能從陣列中移除數字並移動剩餘元素。因此,我們將使用基本的 for 迴圈從陣列中移除一個元素,並將剩餘元素移動以獲得輸出陣列。
理解問題陳述
問題陳述是指建立一個函式,該函式可以從陣列中移除給定的數字,並將剩餘的項移動以填充已移除項的空隙。例如,我們給定一個數組 [1, 2, 3, 4, 5] 和數字 2,則結果陣列將是 [1, 3, 4, 5],其中數字 2 已被移除,其餘項已移動以填充空隙。
給定問題的邏輯
為了解決給定的問題,我們將持續跟蹤當前要複製元素的位置。每當我們找到一個等於給定數字的元素時,我們將跳過該數字並繼續迭代陣列。如果我們找到一個不等於給定數字的項,我們將將其複製到當前位置並遞增位置。如果迴圈結束,我們將把陣列的長度設定為當前位置,並消除未複製的元素。
該函式將能夠移動剩餘的項,以便陣列中沒有留下空隙。
演算法 - 使用 filter 方法
步驟 1 − 宣告一個整數陣列,從中我們必須移除數字。
步驟 2 − 由於我們必須透過移除數字來顯示陣列,因此使用 Javascript 中的 filter 方法從上述陣列中過濾該數字。
步驟 3 − 移除數字並移動陣列中的空隙後,顯示陣列。
演算法程式碼 - 使用 filter 方法
const arrayOfNumbers = [12, 22, 35, 44, 52, 35, 68]; const arrayWithoutNum = arrayOfNumbers.filter(function (number) { return number !== 35; }); // arrayOfNumbers is unchanged console.log("Actual Array: ",arrayOfNumbers); console.log("Array without a number: ", arrayWithoutNum);
演算法 - 使用 for 迴圈
步驟 1 − 在第一步定義一個數組。
步驟 2 − 使用一個空陣列來儲存從陣列中移除數字後得到的結果陣列。
步驟 3 − 使用 for 迴圈遍歷陣列並檢查條件:如果陣列中的數字不等於宣告的數字,則將其推入新陣列。
步驟 4 − 最後,顯示從陣列中移除數字後的結果陣列。
演算法程式碼 - 使用 for 迴圈
const arrayOfNumbers = [12, 22, 35, 44, 52, 35, 68]; const arrayWithoutNum = []; for (let i = 0; i < arrayOfNumbers.length; i++) { if (arrayOfNumbers[i] !== 35) { arrayWithoutNum.push(arrayOfNumbers[i]); } } // arrayOfNumbers is unchanged console.log("Actual array of Numbers: ", arrayOfNumbers); console.log("Array after removing a number: ", arrayWithoutNum);
複雜度
由於我們必須遍歷陣列中的所有整數,因此該方法消耗的時間為 O(n)。並且演算法的空間複雜度是常數 O(1)。因為沒有使用額外的的資料結構。
結論
因此,對於上述程式碼,我們使用 for 迴圈在 Javascript 中搜索要從陣列中移除的數字,並透過移動元素的位置來獲取剩餘元素。此函式的時間複雜度為 O(n),空間複雜度為 O(1)。