From 6960f1136fcc4d1d8300be9a978c56db44a7aa31 Mon Sep 17 00:00:00 2001 From: MH Hung Date: Thu, 28 Aug 2025 12:25:01 +0800 Subject: [PATCH] [#3446] feat(SortMatrix): add C# solution --- 202508/3446 SortMatrix/C#/C#.sln | 24 ++++ 202508/3446 SortMatrix/C#/Program.cs | 115 ++++++++++++++++++++ 202508/3446 SortMatrix/C#/SortMatrix.csproj | 10 ++ 3 files changed, 149 insertions(+) create mode 100644 202508/3446 SortMatrix/C#/C#.sln create mode 100644 202508/3446 SortMatrix/C#/Program.cs create mode 100644 202508/3446 SortMatrix/C#/SortMatrix.csproj diff --git a/202508/3446 SortMatrix/C#/C#.sln b/202508/3446 SortMatrix/C#/C#.sln new file mode 100644 index 0000000..6170ac3 --- /dev/null +++ b/202508/3446 SortMatrix/C#/C#.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SortMatrix", "SortMatrix.csproj", "{60318F94-4F41-A4B8-C189-A8135ECCECCB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {60318F94-4F41-A4B8-C189-A8135ECCECCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {60318F94-4F41-A4B8-C189-A8135ECCECCB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60318F94-4F41-A4B8-C189-A8135ECCECCB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {60318F94-4F41-A4B8-C189-A8135ECCECCB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9F59D1F6-D9F3-492C-BC39-A5771AF22B36} + EndGlobalSection +EndGlobal diff --git a/202508/3446 SortMatrix/C#/Program.cs b/202508/3446 SortMatrix/C#/Program.cs new file mode 100644 index 0000000..88ecb10 --- /dev/null +++ b/202508/3446 SortMatrix/C#/Program.cs @@ -0,0 +1,115 @@ +public class Solution +{ + public int[][] SortMatrix(int[][] grid) + { + // 左下 + var leftDiagonals = new Dictionary>(); + for (var i = 0; i < grid.Length; i++) + { + // total -> 2n + 1 way + for (var j = 0; j <= i; j++) + { + int diagonal = i - j; + if (!leftDiagonals.ContainsKey(diagonal)) + { + leftDiagonals[diagonal] = new List(); + } + leftDiagonals[diagonal].Add(grid[i][j]); + } + } + + // 右上 + var rightDiagonals = new Dictionary>(); + for (var i = 0; i < grid.Length; i++) + { + for (var j = i; j < grid.Length; j++) + { + int diagonal = j - i; + if (!rightDiagonals.ContainsKey(diagonal)) + { + rightDiagonals[diagonal] = new List(); + } + rightDiagonals[diagonal].Add(grid[i][j]); + } + } + + foreach (var diagonal in leftDiagonals.Values) + { + diagonal.Sort((a, b) => b.CompareTo(a)); + } + + foreach (var diagonal in rightDiagonals.Values) + { + diagonal.Sort((a, b) => a.CompareTo(b)); + } + + for (var i = 0; i < grid.Length; i++) + { + for (var j = 0; j <= i; j++) + { + int diagonal = i - j; + grid[i][j] = leftDiagonals[diagonal][0]; + leftDiagonals[diagonal].RemoveAt(0); + } + + for (var j = i; j < grid.Length; j++) + { + if (i == j) continue; + int diagonal = j - i; + grid[i][j] = rightDiagonals[diagonal][0]; + rightDiagonals[diagonal].RemoveAt(0); + } + } + return grid; + } +} + +public class Solution2 { + public int[][] SortMatrix(int[][] grid) { + int n = grid.Length; + + for (int i = 0; i < n; i++) { + List tmp = new List(); + for (int j = 0; i + j < n; j++) { + tmp.Add(grid[i + j][j]); + } + tmp.Sort((a, b) => b.CompareTo(a)); + for (int j = 0; i + j < n; j++) { + grid[i + j][j] = tmp[j]; + } + } + + for (int j = 1; j < n; j++) { + List tmp = new List(); + for (int i = 0; j + i < n; i++) { + tmp.Add(grid[i][j + i]); + } + tmp.Sort(); + for (int i = 0; j + i < n; i++) { + grid[i][j + i] = tmp[i]; + } + } + + return grid; + } +} + +class Program +{ + static void Main() + { + var Solution = new Solution(); + + var gird = new int[][] { [1, 7, 3], [9, 8, 2], [4, 5, 6] }; + var result = Solution.SortMatrix(gird); + + for (int i = 0; i < result.Length; i++) + { + for (int j = 0; j < result[i].Length; j++) + { + Console.Write(result[i][j] + " "); + } + Console.WriteLine(); + } + } +} \ No newline at end of file diff --git a/202508/3446 SortMatrix/C#/SortMatrix.csproj b/202508/3446 SortMatrix/C#/SortMatrix.csproj new file mode 100644 index 0000000..2150e37 --- /dev/null +++ b/202508/3446 SortMatrix/C#/SortMatrix.csproj @@ -0,0 +1,10 @@ + + + + Exe + net8.0 + enable + enable + + +