g0201_0300.s0221_maximal_square.complexity.md Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
**Time Complexity (Big O Time):**
1. **Initialization:**
- Initializing the `m` and `n` variables based on the dimensions of the input matrix takes O(1) time.
2. **Dynamic Programming (DP) Table Initialization:**
- Creating a 2D DP table `dp` of size `(m + 1) x (n + 1)` takes O(m * n) time, where "m" and "n" are the dimensions of the input matrix.
3. **DP Table Filling:**
- The program uses nested loops to iterate through each cell of the input matrix.
- For each '1' encountered in the input matrix, it updates the corresponding cell in the DP table based on the minimum value of its neighboring cells (above, left, and diagonal upper-left).
- The nested loops iterate through all cells in the matrix once, and the updates for each cell take constant time.
- Therefore, the time complexity for DP table filling is O(m * n).
4. **Maximum Value Search:**
- During DP table filling, the program keeps track of the maximum value seen (`max`) in the DP table.
- This also takes O(m * n) time since it iterates through all cells once.
Overall, the dominant factor in terms of time complexity is the DP table filling step, which is O(m * n).
**Space Complexity (Big O Space):**
1. **DP Table (`dp`):**
- The space complexity of the DP table is O((m + 1) * (n + 1)), which simplifies to O(m * n) since the additional row and column are added for convenience.
- Therefore, the space complexity is O(m * n) for the DP table.
2. **Other Variables:**
- The space complexity for other variables like `m`, `n`, and `max` is O(1), as they occupy constant space.
In summary, the space complexity is primarily determined by the DP table, which is O(m * n), and the time complexity is dominated by the DP table filling step, also O(m * n).