INC_HEIGHTS - Editorial

Problem Link - Parallel World Practice Problem in Heaps

Problem Statement

You are currently in a parallel world. There are two unique things about this world.
First is that you have a speed of infinite, i.e. you can reach from location X to another location Y in 0 unit time if it is possible to reach location Y from location X.
Second is that at the time t heights of all locations having heights \lt t, increases by 1, whereas the heights of other location remain unchanged.
The parallel world is represented by a 2D-matrix A of size N*N. You are currently located at (0,0) and you want to reach (n-1,n-1) location (so that you can return to the normal world). You can move from one square to another only if they share a side and the height of both the squares is equal. Find the minimum amount of time required for you to reach from (0,0) to (n-1,n-1).
Initially the time t = 0.

Approach

  • Data Structures:
    • We utilize a priority queue (min-heap) to keep track of the cells to explore, sorted by the maximum height encountered along the path to that cell. This ensures that we always expand the path with the current lowest maximum height.
    • We define a structure HeapNode to store each node in the heap, which includes the current maximum height, the row index, and the column index.
  • Heap Operations:
    • Insertion (Push): When inserting a new cell into the heap, we maintain the heap property, ensuring the smallest maximum height is at the top.
    • Extraction (Pop): The cell with the smallest maximum height is extracted from the heap for processing.
  • Neighbor Exploration:
    • For each cell processed, we check its valid neighbors (up, down, left, right). If a neighbor cell has not been visited, we calculate the new maximum height as the maximum of the current path’s maximum height and the neighbor’s height.
    • This new height and the neighbor’s coordinates are pushed onto the heap for further exploration.
  • Termination:
    • The process continues until we reach the bottom-right cell of the matrix. At this point, the maximum height recorded will be the minimized maximum height along the path.

Complexity

  • Time Complexity: The time complexity is O(N^2 log(N^2)) where N is the size of one dimension of the matrix. This complexity arises from the fact that each cell can potentially be inserted into the heap once, and extracting from the heap takes logarithmic time relative to its size.
  • Space Complexity: The space complexity is O(N^2) for storing the matrix and the priority queue, which could store up to N^2 cells.