Solving The Algorithm Question In Flight Entertainment
The question is asking us to create a function that returns a boolean value whenever there are two
movieLengths that add up to the
flightLength. There are many ways to solve this problem, and many complexities to choose from, but I figured out a way to solve this problem using O(n) run time.
Using hashes tables or arrays would be a great way to solve this problem, but I’m going to use Sets which are similar to hash maps, to show another way of solving this problem. I created a variable
movieTimeSet that represents the Set that I’m creating. I won’t return
movieTimeSet since the question is only asking to return a boolean value. This is what the code looks like at the moment:
The next step is to iterate over the
movieLengths array to check each element that’s inside the array. For this task, I’ll be using a
After creating the logic for the for loop, we need to think about the next steps that need to take place in order for the function to work. The question is asking us to return
true if the array has two numbers that add up to the
flightLength. We’re given the
flightLength as an argument and now that we’re looping over the array, we also have the
currentNumber which is
movieLengths[i]. This means that we can subtract the total (
flightLength) minus the current number (
movieLengths[i]) and that’ll give us the missing number. I created a variable for that so that the code stays organized.
And here’s what
secondMovieTime looks like so far:
Now that we got the second movie time, we need to create a conditional that checks if
secondMovieTime exists or doesn’t exist in the Set. Sets having very useful built in methods that can be very helpful! Check out the resources section below for more info on those built-in methods. Here’s what I have so far:
Let’s go over lines 15 to 19 one more time. On lines 15–16 the conditional states, if the Set that we created (
movieTimeSet) doesn’t have the second movie time (
secondMovieTime) then add the
currentNumber inside the set. If the set does have
secondMovieTime then return
true. After this conditional, the loop will end.
The last step is returning
false after the for loop. This needs to be done because we’re stating that after checking all of the elements in the array, if there aren’t two numbers that add up to the
flightLength then return
false. Here’s the full solution to the problem and the expected output:
It’s always best practice to use different test cases to ensure that the solution is working properly. Please feel free to reach out or leave a comment on this blog if there are better solutions for this problem! For more info on for statements and Sets, make sure to check out the resources section below!