Given a 2D grid of size N x M. The task is to find the final direction after visiting every cell under given conditions.
- You can start only from the top left corner of the N*M grid and facing towards the right.
- You can walk one square at a time in the direction you are facing.
- If you reach the boundary of the grid or if the next square you are about to visit has already been visited, you turn right.
Input: N = 3, M = 1
Approach: For the above problem statement we have to observe the following:
- The path formed will always be a Spiral path. So, we can say that any of the middle cells will be the final cell and we need to find the direction of that cell.
- If n > m, then the final direction could only be Up or Down depending on the value of m because there always be some cell left in the last uncovered column when all other columns are covered.
- If n <= m, then the final direction could only be Left or Right depending on the value of n.
Therefore on the basis of above observations, there can be only 4 cases for 4 directions:
- If n > m and m is even, final direction will be Up.
- If n > m and m is odd, final direction will be Down.
- If n <= m and n is even, final direction will be Left.
- If n <= m and n is odd, final direction will be Right.
Below is the implementation of the above approach:
Time Complexity: O(1)
Auxiliary Space: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.