問題
看起來像是某個流氓水管工和他的兄弟又到處亂跑,破壞了你的舞台。
在您收到更多投訴之前,需要先修復連接關卡各個階段的管道。
當第一個管道之後的每個管道比前一個管道多 1 時,管道是正確的。
任務
給定一個按升序排序的唯一數字列表,傳回一個新列表,以便每個索引的值從最小值到最大值(包括兩者)遞增 1。
範例
輸入:1,3,5,6,7,8 輸出:1,2,3,4,5,6,7,8
第 1 步:
首先,我們必須找到最大值和最小值。我知道你在想什麼,我們可以用 Math.max 和 Math.min。
在這種情況下,情況並非如此。這是一種有效的方法,但沒有必要,因為輸入清單已經按升序排序。
排序時,保證索引0處的元素(即numbers[0])是最小值,與最後一個元素相同。因此,直接存取第一個和最後一個元素更有效率和直接。
因此,我們找到索引 0 處的數字和最後一個數字,並初始化一些變數來為我們儲存這些值:
let minVal = numbers[0]; let maxVal = numbers[numbers.length - 1];
第 2 步:
之後,我們建立一個空數組來儲存新的排序值:
let newNums = [];
第三步:
循環整個清單
設 i = minVal;將循環計數器 i 初始化為 minVal 的值。這是我們的循環開始的地方。
i
i++ 充當我們的增量器。每次迭代 for 迴圈後,i 的值會增加 1
第 4 步:
接下來,我們使用 array.push() 方法將 i 的遞增值附加到空數組 newNums 中。
然後,我們傳回陣列 newNums 的最終值。
function pipeFix(numbers) { // find the minimum and maximum values in the list let minVal = numbers[0]; let maxVal = numbers[numbers.length - 1]; // create an array to store the sorted values in ascending order let newNums = []; // loop through the sorted array, from smallest value to the largest for (let i = minVal; i <= maxVal; i++) { newNums.push(i); } return newNums; }
希望這篇文章對您有幫助。如果您喜歡這篇文章,請點贊,並隨時在評論部分留下任何疑問。這就是今天的全部內容。
以上是解決方案:Lario 和 Muigi 管道問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!