Issue
Looks like some hoodlum plumber and his brother has been running around and damaging your stages again.
The pipes
connecting your level's stages together need to be fixed before you receive any more complaints.
The pipes
are correct when each pipe
after the first is 1 more than the previous one.
Task
Given a list of unique numbers
sorted in ascending order, return a new list so that the values increment by 1 for each index from the minimum value up to the maximum value (both included).
Example
Input: 1,3,5,6,7,8
Output: 1,2,3,4,5,6,7,8
Solution Breakdown
Step 1:
First, we have to find the maximum and minimum value. I know what you're thinking, we can use Math.max and Math.min.
In this scenario, that's not the case. It is a valid approach but it's unnecessary since the input list has already been sorted in ascending order.
When sorted, it is a guarantee that the element at index 0(ie numbers[0]) is the smallest value, same as the last element. Therefore, directly accessing the first and last elements is more efficient and straightforward.
So, we find the number at index 0 and the last one and initialize some variables to store these values for us:
let minVal = numbers[0];
let maxVal = numbers[numbers.length - 1];
Step 2:
After that, we create an empty array to store the new sorted values:
let newNums = [];
Step 3:
Loop through the entire list
let i = minVal;
initializes the loop counter i
to the value of minVal
. This is where our loop will start.
i <= maxVal;
is the loop condition. The loop will continue running as long as i
is less than or equal to maxVal
. Once i
exceeds maxVal
, the loop stops.
i++
serves as our incrementor. After each iteration of our for loop, the value of i
is increased by 1
Step 4:
Following that, we append the incremented value of i
to our empty array newNums
using the array.push() method.
Then, we return the final value of our array newNums
.
Final Solution
I hope this article helps. If you like the article, please leave a like and feel free to leave any concerns on the comment section. That is all for today.
Top comments (0)