问题
看起来像是某个流氓水管工和他的兄弟又到处乱跑,破坏了你的舞台。
在您收到更多投诉之前,需要先修复连接关卡各个阶段的管道。
当第一个管道之后的每个管道比前一个管道多 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中文网其他相关文章!