-
Notifications
You must be signed in to change notification settings - Fork 5
3394. Check if Grid can be Cut into Sections #63
-
🟩 3394. Check if Grid can be Cut into Sections
Medium | Grid | Geometry | Sorting
📝 Problem Statement
You are given an integer n representing the dimensions of an n x n grid, with the origin at the bottom-left corner of the grid.
You are also given a 2D array of coordinates rectangles, where rectangles[i] is in the form [startx, starty, endx, endy], representing a rectangle on the grid.
Each rectangle is defined as follows:
(startx, starty): The bottom-left corner of the rectangle.(endx, endy): The top-right corner of the rectangle.- Rectangles do not overlap.
Your task is to determine if it is possible to make either two horizontal or two vertical cuts on the grid such that:
- Each of the three resulting sections formed by the cuts contains at least one rectangle.
- Every rectangle belongs to exactly one section.
Return true if such cuts can be made; otherwise, return false.
🔹 Example 1
Input:
n = 5 rectangles = [[1,0,5,2],[0,2,2,4],[3,2,5,3],[0,4,4,5]]
Output:
trueExplanation:
We can make horizontal cuts at y = 2 and y = 4.
-------------
5 | █ █ █ █
|█ █
4 |█ █ █ █ █
|█ █
3 |█ █ █ █
|█ █ █ █ █
2 |█ █ █ █ █
-------------
1 |█ █ █ █ █
-------------
0 1 2 3 4 5
Hence, output is true.
🔹 Example 2
Input:
n = 4 rectangles = [[0,0,1,1],[2,0,3,4],[0,2,2,3],[3,0,4,3]]
Output:
trueExplanation:
We can make vertical cuts at x = 2 and x = 3.
🔹 Example 3
Input:
n = 4 rectangles = [[0,2,2,4],[1,0,3,2],[2,2,3,4],[3,0,4,2],[3,2,4,4]]
Output:
falseExplanation:
We cannot make two horizontal or two vertical cuts that satisfy the conditions. Hence, output is false.
🛠 Constraints
✅ 3 <= n <= 10^9
✅ 3 <= rectangles.length <= 10^5
✅ 0 <= rectangles[i][0] < rectangles[i][2] <= n
✅ 0 <= rectangles[i][1] < rectangles[i][3] <= n
✅ No two rectangles overlap.
💡 Approach & Hints
- Sort rectangles by x or y coordinates.
- Find possible cut positions that divide the grid into three valid sections.
- Check if each section contains at least one rectangle.
- Verify that rectangles do not cross the cuts.
🔹 If a valid set of two horizontal or two vertical cuts exists, return true, else return false.
⏳ Time Complexity Analysis
- Sorting the rectangles takes O(m log m) where
mis the number of rectangles. - Checking the conditions takes O(m).
- Total Complexity: O(m log m) (which is efficient for
m ≤ 10^5).
✍ Author
👤 Your Name
📧 your.email@example.com
🌐 [GitHub Profile](https://github.com/yourgithubprofile)
📢 Feel free to contribute by improving the solution or adding more test cases! 🚀
---
This **README.md** file includes:
✅ **Clear problem statement**
✅ **Examples with input/output and diagrams**
✅ **Constraints and approach hints**
✅ **Time complexity analysis**
Let me know if you need any modifications! 😊🔥
Beta Was this translation helpful? Give feedback.
All reactions
solve that to contribute [organization]
Replies: 1 comment
-
solve that to contribute [organization]
Beta Was this translation helpful? Give feedback.