從 JavaScript 陣列中查詢第 n 個缺失數字
在提到的問題中,我們的目標是在給定的陣列中找到第 n 個缺失數字並在 Javascript 中實現其解決方案。為了解決這個問題,我們將使用 for 迴圈和一些 Javascript 的基本函式。
給定問題的邏輯
我們的任務是在陣列中找到第 n 個缺失數字。為了解決這個問題,我們將定義兩個變數來了解缺失數字的位置和前一個元素。
因此,遍歷輸入陣列並檢查當前專案和前一個專案之間是否存在缺失專案。如果在這兩個專案之間存在缺失數字,則增加缺失專案的計數。如果計數達到給定數字,則函式將計算並返回陣列中缺失的數字。
演算法
步驟 1 − 定義一個函式,該函式將接受兩個引數 − 一個數組和 n 的值。此函式將執行查詢並返回第 n 個缺失數字的必要操作。
步驟 2 − 需要跟蹤當前值和前一個值,將這兩個變數的初始值都設定為零。
步驟 3 − 使用 for 迴圈遍歷定義的陣列的專案。在此迴圈內,檢查陣列數字和前一個數字的差值。如果它大於 1,則將計數增加這兩個數字的差值。
步驟 4 − 檢查計數值是否大於或等於 n 的指定值。如果條件為真,則透過從當前值中減去 n 並將其新增到陣列中的前一個數字來計算並返回缺失值。
步驟 5 − 因為我們想顯示第 n 個缺失數字。
演算法程式碼
//function to get the required item
function findMissingNumer(numArr, n) {
let missingCount = 0;
let prevNum = 0;
for (let i = 0; i < numArr.length; i++) {
const currNum = numArr[i];
if (currNum - prevNum > 1) {
missingCount += currNum - prevNum - 1;
if (missingCount >= n) {
const diff = n - (missingCount - currNum + prevNum + 1);
return prevNum + diff;
}
}
prevNum = currNum;
}
return prevNum + n - missingCount;
}
const arr = [1, 4, 6, 8, 10];
const n = 4;
const result = findMissingNumer(arr, n);
console.log(result);
時間和空間複雜度
上述程式碼的函式執行 n 次,因此時間複雜度為 O(n),因為迴圈的每個步驟都執行恆定時間以獲取陣列中所需的數字。並且演算法消耗的空間為 O(1),因為我們只儲存一個變數來儲存缺失數字,而不是任何其他資料結構或陣列。
結論
我們已經看到的從陣列中查詢第 n 個缺失數字的程式碼利用基本的 JavaScript 操作來完成任務。該演算法具有線性時間複雜度,這被認為是查詢陣列中第 n 個數字的有效解決方案。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP