20240711 Finished
This commit is contained in:
parent
c779dcecf8
commit
bf2d07f763
17
LeetCodeSharp.Tests/P427Tests.cs
Normal file
17
LeetCodeSharp.Tests/P427Tests.cs
Normal file
|
@ -0,0 +1,17 @@
|
|||
namespace LeetCodeSharp.Tests;
|
||||
|
||||
using LeetCodeSharp.Problems427;
|
||||
|
||||
public class P427Tests
|
||||
{
|
||||
[Fact]
|
||||
public void Test1()
|
||||
{
|
||||
int[][] grid = [[0, 1], [1, 0]];
|
||||
|
||||
Solution solution = new();
|
||||
Node root = solution.Construct(grid);
|
||||
|
||||
Assert.False(root.isLeaf);
|
||||
}
|
||||
}
|
137
LeetCodeSharp/Problems/Solution427.cs
Normal file
137
LeetCodeSharp/Problems/Solution427.cs
Normal file
|
@ -0,0 +1,137 @@
|
|||
// [427] Construct Quad Tree
|
||||
|
||||
|
||||
namespace LeetCodeSharp.Problems427
|
||||
{
|
||||
// Submission codes start here
|
||||
|
||||
/*
|
||||
// Definition for a QuadTree node.
|
||||
public class Node {
|
||||
public bool val;
|
||||
public bool isLeaf;
|
||||
public Node topLeft;
|
||||
public Node topRight;
|
||||
public Node bottomLeft;
|
||||
public Node bottomRight;
|
||||
|
||||
public Node() {
|
||||
val = false;
|
||||
isLeaf = false;
|
||||
topLeft = null;
|
||||
topRight = null;
|
||||
bottomLeft = null;
|
||||
bottomRight = null;
|
||||
}
|
||||
|
||||
public Node(bool _val, bool _isLeaf) {
|
||||
val = _val;
|
||||
isLeaf = _isLeaf;
|
||||
topLeft = null;
|
||||
topRight = null;
|
||||
bottomLeft = null;
|
||||
bottomRight = null;
|
||||
}
|
||||
|
||||
public Node(bool _val,bool _isLeaf,Node _topLeft,Node _topRight,Node _bottomLeft,Node _bottomRight) {
|
||||
val = _val;
|
||||
isLeaf = _isLeaf;
|
||||
topLeft = _topLeft;
|
||||
topRight = _topRight;
|
||||
bottomLeft = _bottomLeft;
|
||||
bottomRight = _bottomRight;
|
||||
}
|
||||
}
|
||||
*/
|
||||
public class Node
|
||||
{
|
||||
public bool val;
|
||||
public bool isLeaf;
|
||||
public Node topLeft;
|
||||
public Node topRight;
|
||||
public Node bottomLeft;
|
||||
public Node bottomRight;
|
||||
|
||||
public Node()
|
||||
{
|
||||
val = false;
|
||||
isLeaf = false;
|
||||
topLeft = null;
|
||||
topRight = null;
|
||||
bottomLeft = null;
|
||||
bottomRight = null;
|
||||
}
|
||||
|
||||
public Node(bool _val, bool _isLeaf)
|
||||
{
|
||||
val = _val;
|
||||
isLeaf = _isLeaf;
|
||||
topLeft = null;
|
||||
topRight = null;
|
||||
bottomLeft = null;
|
||||
bottomRight = null;
|
||||
}
|
||||
|
||||
public Node(bool _val, bool _isLeaf, Node _topLeft, Node _topRight, Node _bottomLeft, Node _bottomRight)
|
||||
{
|
||||
val = _val;
|
||||
isLeaf = _isLeaf;
|
||||
topLeft = _topLeft;
|
||||
topRight = _topRight;
|
||||
bottomLeft = _bottomLeft;
|
||||
bottomRight = _bottomRight;
|
||||
}
|
||||
}
|
||||
|
||||
public class Solution
|
||||
{
|
||||
public Node Construct(int[][] grid)
|
||||
{
|
||||
var length = grid.Length;
|
||||
|
||||
return ConstructRecursive(grid, 0, 0, length);
|
||||
}
|
||||
|
||||
private Node ConstructRecursive(int[][] grid, int startX, int startY, int length)
|
||||
{
|
||||
if (IsSameGrid(grid, startX, startY, length))
|
||||
{
|
||||
return new Node(grid[startX][startY] == 1, true);
|
||||
}
|
||||
|
||||
var middleX = startX + length / 2;
|
||||
var middleY = startY + length / 2;
|
||||
var middleLength = length / 2;
|
||||
|
||||
var root = new Node
|
||||
{
|
||||
topLeft = ConstructRecursive(grid, startX, startY, middleLength),
|
||||
topRight = ConstructRecursive(grid, startX, middleY, middleLength),
|
||||
bottomLeft = ConstructRecursive(grid, middleX, startY, middleLength),
|
||||
bottomRight = ConstructRecursive(grid, middleX, middleY, middleLength)
|
||||
};
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
private bool IsSameGrid(int[][] grid, int startX, int startY, int length)
|
||||
{
|
||||
var value = grid[startX][startY];
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
for (var j = 0; j < length; j++)
|
||||
{
|
||||
if (grid[startX + i][startY + j] != value)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Submission codes end here
|
||||
}
|
Loading…
Reference in New Issue
Block a user