Skip to content

Commit 5bfd9c5

Browse files
committed
feat: add solutions to lc problem: No.1329
No.1329.Sort the Matrix Diagonally
1 parent 682126b commit 5bfd9c5

File tree

7 files changed

+151
-49
lines changed

7 files changed

+151
-49
lines changed

.github/workflows/sync.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ jobs:
2323
with:
2424
gitee-username: yanglbme
2525
gitee-password: ${{ secrets.GITEE_PASSWORD }}
26-
gitee-repo: doocs/leetcode
26+
gitee-repo: Doocs/leetcode
2727
branch: main

solution/1300-1399/1329.Sort the Matrix Diagonally/README.md

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,15 @@
5050
<!-- 这里可写当前语言的特殊实现逻辑 -->
5151

5252
```python
53-
53+
class Solution:
54+
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
55+
m, n = len(mat), len(mat[0])
56+
for k in range(min(m, n) - 1):
57+
for i in range(m - 1):
58+
for j in range(n - 1):
59+
if mat[i][j] > mat[i + 1][j + 1]:
60+
mat[i][j], mat[i + 1][j + 1] = mat[i + 1][j + 1], mat[i][j]
61+
return mat
5462
```
5563

5664
### **Java**
@@ -60,26 +68,55 @@
6068
```java
6169
class Solution {
6270
public int[][] diagonalSort(int[][] mat) {
63-
for (int i = 0; i < mat.length; i++) {
64-
handler(mat, i, 0);
65-
}
66-
for (int i = 0; i < mat[0].length; i++) {
67-
handler(mat, 0, i);
71+
int m = mat.length, n = mat[0].length;
72+
for (int k = 0; k < Math.min(m, n) - 1; ++k) {
73+
for (int i = 0; i < m - 1; ++i) {
74+
for (int j = 0; j < n - 1; ++j) {
75+
if (mat[i][j] > mat[i + 1][j + 1]) {
76+
int t = mat[i][j];
77+
mat[i][j] = mat[i + 1][j + 1];
78+
mat[i + 1][j + 1] = t;
79+
}
80+
}
81+
}
6882
}
6983
return mat;
7084
}
85+
}
86+
```
7187

72-
public void handler(int[][] mat, int i, int j) {
73-
for (; i < mat.length && j < mat[0].length; i++, j++) {
74-
for (int k = i + 1, p = j + 1; k < mat.length && p < mat[0].length; k++, p++) {
75-
if (mat[k][p] < mat[i][j]){
76-
int temp = mat[k][p];
77-
mat[k][p] = mat[i][j];
78-
mat[i][j] = temp;
79-
}
80-
}
81-
}
88+
### **C++**
89+
90+
```cpp
91+
class Solution {
92+
public:
93+
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
94+
int m = mat.size(), n = mat[0].size();
95+
for (int k = 0; k < min(m, n) - 1; ++k)
96+
for (int i = 0; i < m - 1; ++i)
97+
for (int j = 0; j < n - 1; ++j)
98+
if (mat[i][j] > mat[i + 1][j + 1])
99+
swap(mat[i][j], mat[i + 1][j + 1]);
100+
return mat;
82101
}
102+
};
103+
```
104+
105+
### **Go**
106+
107+
```go
108+
func diagonalSort(mat [][]int) [][]int {
109+
m, n := len(mat), len(mat[0])
110+
for k := 0; k < m-1 && k < n-1; k++ {
111+
for i := 0; i < m-1; i++ {
112+
for j := 0; j < n-1; j++ {
113+
if mat[i][j] > mat[i+1][j+1] {
114+
mat[i][j], mat[i+1][j+1] = mat[i+1][j+1], mat[i][j]
115+
}
116+
}
117+
}
118+
}
119+
return mat
83120
}
84121
```
85122

solution/1300-1399/1329.Sort the Matrix Diagonally/README_EN.md

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,34 +40,71 @@
4040
### **Python3**
4141

4242
```python
43-
43+
class Solution:
44+
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
45+
m, n = len(mat), len(mat[0])
46+
for k in range(min(m, n) - 1):
47+
for i in range(m - 1):
48+
for j in range(n - 1):
49+
if mat[i][j] > mat[i + 1][j + 1]:
50+
mat[i][j], mat[i + 1][j + 1] = mat[i + 1][j + 1], mat[i][j]
51+
return mat
4452
```
4553

4654
### **Java**
4755

4856
```java
4957
class Solution {
5058
public int[][] diagonalSort(int[][] mat) {
51-
for (int i = 0; i < mat.length; i++) {
52-
handler(mat, i, 0);
53-
}
54-
for (int i = 0; i < mat[0].length; i++) {
55-
handler(mat, 0, i);
59+
int m = mat.length, n = mat[0].length;
60+
for (int k = 0; k < Math.min(m, n) - 1; ++k) {
61+
for (int i = 0; i < m - 1; ++i) {
62+
for (int j = 0; j < n - 1; ++j) {
63+
if (mat[i][j] > mat[i + 1][j + 1]) {
64+
int t = mat[i][j];
65+
mat[i][j] = mat[i + 1][j + 1];
66+
mat[i + 1][j + 1] = t;
67+
}
68+
}
69+
}
5670
}
5771
return mat;
5872
}
73+
}
74+
```
5975

60-
public void handler(int[][] mat, int i, int j) {
61-
for (; i < mat.length && j < mat[0].length; i++, j++) {
62-
for (int k = i + 1, p = j + 1; k < mat.length && p < mat[0].length; k++, p++) {
63-
if (mat[k][p] < mat[i][j]){
64-
int temp = mat[k][p];
65-
mat[k][p] = mat[i][j];
66-
mat[i][j] = temp;
67-
}
68-
}
69-
}
76+
### **C++**
77+
78+
```cpp
79+
class Solution {
80+
public:
81+
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
82+
int m = mat.size(), n = mat[0].size();
83+
for (int k = 0; k < min(m, n) - 1; ++k)
84+
for (int i = 0; i < m - 1; ++i)
85+
for (int j = 0; j < n - 1; ++j)
86+
if (mat[i][j] > mat[i + 1][j + 1])
87+
swap(mat[i][j], mat[i + 1][j + 1]);
88+
return mat;
7089
}
90+
};
91+
```
92+
93+
### **Go**
94+
95+
```go
96+
func diagonalSort(mat [][]int) [][]int {
97+
m, n := len(mat), len(mat[0])
98+
for k := 0; k < m-1 && k < n-1; k++ {
99+
for i := 0; i < m-1; i++ {
100+
for j := 0; j < n-1; j++ {
101+
if mat[i][j] > mat[i+1][j+1] {
102+
mat[i][j], mat[i+1][j+1] = mat[i+1][j+1], mat[i][j]
103+
}
104+
}
105+
}
106+
}
107+
return mat
71108
}
72109
```
73110

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {
4+
int m = mat.size(), n = mat[0].size();
5+
for (int k = 0; k < min(m, n) - 1; ++k)
6+
for (int i = 0; i < m - 1; ++i)
7+
for (int j = 0; j < n - 1; ++j)
8+
if (mat[i][j] > mat[i + 1][j + 1])
9+
swap(mat[i][j], mat[i + 1][j + 1]);
10+
return mat;
11+
}
12+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
func diagonalSort(mat [][]int) [][]int {
2+
m, n := len(mat), len(mat[0])
3+
for k := 0; k < m-1 && k < n-1; k++ {
4+
for i := 0; i < m-1; i++ {
5+
for j := 0; j < n-1; j++ {
6+
if mat[i][j] > mat[i+1][j+1] {
7+
mat[i][j], mat[i+1][j+1] = mat[i+1][j+1], mat[i][j]
8+
}
9+
}
10+
}
11+
}
12+
return mat
13+
}
Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
11
class Solution {
22
public int[][] diagonalSort(int[][] mat) {
3-
for (int i = 0; i < mat.length; i++) {
4-
handler(mat, i, 0);
5-
}
6-
for (int i = 0; i < mat[0].length; i++) {
7-
handler(mat, 0, i);
8-
}
9-
return mat;
10-
}
11-
12-
public void handler(int[][] mat, int i, int j) {
13-
for (; i < mat.length && j < mat[0].length; i++, j++) {
14-
for (int k = i + 1, p = j + 1; k < mat.length && p < mat[0].length; k++, p++) {
15-
if (mat[k][p] < mat[i][j]){
16-
int temp = mat[k][p];
17-
mat[k][p] = mat[i][j];
18-
mat[i][j] = temp;
3+
int m = mat.length, n = mat[0].length;
4+
for (int k = 0; k < Math.min(m, n) - 1; ++k) {
5+
for (int i = 0; i < m - 1; ++i) {
6+
for (int j = 0; j < n - 1; ++j) {
7+
if (mat[i][j] > mat[i + 1][j + 1]) {
8+
int t = mat[i][j];
9+
mat[i][j] = mat[i + 1][j + 1];
10+
mat[i + 1][j + 1] = t;
11+
}
1912
}
2013
}
2114
}
15+
return mat;
2216
}
2317
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def diagonalSort(self, mat: List[List[int]]) -> List[List[int]]:
3+
m, n = len(mat), len(mat[0])
4+
for k in range(min(m, n) - 1):
5+
for i in range(m - 1):
6+
for j in range(n - 1):
7+
if mat[i][j] > mat[i + 1][j + 1]:
8+
mat[i][j], mat[i + 1][j + 1] = mat[i + 1][j + 1], mat[i][j]
9+
return mat

0 commit comments

Comments
 (0)