Given a price rules of parking and start time and end time of parking. Calculate the price
(Below is the table of price rule) Come up with data structure you can store these price rules PriceRule
Price Rules:
On Weekday On Weekend
Hours Price Hours Price
0 – 2 $5 0 – 2 $8
2 – 6 $10 2 – 6 $13
6 – 12 $15 6 – 12 $18
12 – 24 $20 12 – 24 $25
2 The interviewer asked to come up with an architecture for a system which shows the parking spaces available near customers’ location in a mobile app.
Lets start with 1). What is correct way to store Prices.
In order to think the solution we need to find the way input will be given, Input will be number of hrs like 3 hrs of parking or 6 hrs of parking. So we can find the charges for such parking directly.
Solution 1 : we can store this input in 2 hashmaps one for weekday and one for weekend.
Hashmap will be <int, int> we can store {{2,5},{6,10},{12,15},{24,20}}.
Once we get input 3 hrs.
Search for first key greater than input(3) which is 6, so it will be in range of 2-6 and charge accordingly.
#include <iostream> #include <map> using namespace std; int main() { map<int, int> charges; int hrs; int sumCharge=0; charges[2]=5; charges[6]=10; charges[12]=15; charges[24]=20; cout << "Enter Hrs"; cin >> hrs; cout << "Enter Day"; cin >> day; //Decide its week day or weekend if (hrs < 2) sumCharge = charges[2]; else if(hrs < 6) sumCharge = charges[6]; else if(hrs < 12) sumCharge = charges[12]; else if(hrs < 24) sumCharge = charges[24]; // your code goes here if(weekend){ sumCharge + = 3; } cout << "Charges" <<sumCharge; return 0; }
( Obviously as per day, search for which Hashmap to take, week or weekend)
Space Complexity : O(n)
Time Complexity : O(n) -> as searching key in sequence.
Check out Best Java Book
Solution 2 : Can we think for similar solution so that search complexity we can improve, as in solution 1 we are not utilizing Hashmap’s search complexity which is O(1).
Then there are two solution : Use Interval Tree or BST.
Interval Tree : In node keep 5 parameters
Least Value, Most Value, Price, LPtr, RPtr
Interval tree will be balanced same as BST.
We can use BST as ranges are not overlapping.
BST : Store 4 parameters : Most Value, Price, LPtr, RPtr.
We can search for parking hrs will fall in which range with same way we used in Hashmap.
But here in Interval Tree or BST
Space Complexity : O(n)
Time Complexity : O(log n)
Cheers :)
Write to admin@gohired if you have found another solution or similar good question.
Now lets think for question 2nd and Post your comments below.