Compare commits
2 Commits
2a90279797
...
524784a3c5
Author | SHA1 | Date | |
---|---|---|---|
524784a3c5 | |||
6960f1136f |
24
202508/3446 SortMatrix/C#/C#.sln
Normal file
24
202508/3446 SortMatrix/C#/C#.sln
Normal file
@@ -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
|
115
202508/3446 SortMatrix/C#/Program.cs
Normal file
115
202508/3446 SortMatrix/C#/Program.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
public class Solution
|
||||
{
|
||||
public int[][] SortMatrix(int[][] grid)
|
||||
{
|
||||
// 左下
|
||||
var leftDiagonals = new Dictionary<int, List<int>>();
|
||||
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<int>();
|
||||
}
|
||||
leftDiagonals[diagonal].Add(grid[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
// 右上
|
||||
var rightDiagonals = new Dictionary<int, List<int>>();
|
||||
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<int>();
|
||||
}
|
||||
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<int> tmp = new List<int>();
|
||||
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<int> tmp = new List<int>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
10
202508/3446 SortMatrix/C#/SortMatrix.csproj
Normal file
10
202508/3446 SortMatrix/C#/SortMatrix.csproj
Normal file
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
Reference in New Issue
Block a user