Skip to content

Commit 04d6289

Browse files
committedNov 15, 2022
feat: add solutions to lc problem: No.0766
No.0766.Toeplitz Matrix
1 parent 1aca20a commit 04d6289

File tree

9 files changed

+170
-43
lines changed

9 files changed

+170
-43
lines changed
 

‎solution/0700-0799/0765.Couples Holding Hands/README.md

+3-9
Original file line numberDiff line numberDiff line change
@@ -123,23 +123,17 @@ d[find(a)] = distance
123123
```python
124124
class Solution:
125125
def minSwapsCouples(self, row: List[int]) -> int:
126-
n = len(row) >> 1
127-
p = list(range(n))
128-
129126
def find(x):
130127
if p[x] != x:
131128
p[x] = find(p[x])
132129
return p[x]
133130

131+
n = len(row) >> 1
132+
p = list(range(n))
134133
for i in range(0, len(row), 2):
135134
a, b = row[i] >> 1, row[i + 1] >> 1
136135
p[find(a)] = find(b)
137-
138-
cnt = 0
139-
for i in range(n):
140-
if i == find(i):
141-
cnt += 1
142-
return n - cnt
136+
return n - sum(i == find(i) for i in range(n))
143137
```
144138

145139
### **Java**

‎solution/0700-0799/0765.Couples Holding Hands/README_EN.md

+3-9
Original file line numberDiff line numberDiff line change
@@ -47,23 +47,17 @@
4747
```python
4848
class Solution:
4949
def minSwapsCouples(self, row: List[int]) -> int:
50-
n = len(row) >> 1
51-
p = list(range(n))
52-
5350
def find(x):
5451
if p[x] != x:
5552
p[x] = find(p[x])
5653
return p[x]
5754

55+
n = len(row) >> 1
56+
p = list(range(n))
5857
for i in range(0, len(row), 2):
5958
a, b = row[i] >> 1, row[i + 1] >> 1
6059
p[find(a)] = find(b)
61-
62-
cnt = 0
63-
for i in range(n):
64-
if i == find(i):
65-
cnt += 1
66-
return n - cnt
60+
return n - sum(i == find(i) for i in range(n))
6761
```
6862

6963
### **Java**
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
class Solution:
22
def minSwapsCouples(self, row: List[int]) -> int:
3-
n = len(row) >> 1
4-
p = list(range(n))
5-
63
def find(x):
74
if p[x] != x:
85
p[x] = find(p[x])
96
return p[x]
107

8+
n = len(row) >> 1
9+
p = list(range(n))
1110
for i in range(0, len(row), 2):
1211
a, b = row[i] >> 1, row[i + 1] >> 1
1312
p[find(a)] = find(b)
14-
15-
cnt = 0
16-
for i in range(n):
17-
if i == find(i):
18-
cnt += 1
19-
return n - cnt
13+
return n - sum(i == find(i) for i in range(n))

‎solution/0700-0799/0766.Toeplitz Matrix/README.md

+62-6
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,11 @@
5555

5656
<!-- 这里可写通用的实现逻辑 -->
5757

58-
遍历矩阵,若出现元素与其左上角的元素不等的情况,返回 `false`
58+
**方法一:一次遍历**
59+
60+
遍历矩阵,若出现元素与其左上角的元素不等的情况,返回 `false`。否则,遍历结束后返回 `true`
61+
62+
时间复杂度 $O(m \times n)$,空间复杂度 $O(1)$。其中 $m$ 和 $n$ 分别为矩阵的行数和列数。
5963

6064
<!-- tabs:start -->
6165

@@ -67,11 +71,7 @@
6771
class Solution:
6872
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
6973
m, n = len(matrix), len(matrix[0])
70-
for i in range(1, m):
71-
for j in range(1, n):
72-
if matrix[i][j] != matrix[i - 1][j - 1]:
73-
return False
74-
return True
74+
return all(matrix[i][j] == matrix[i - 1][j - 1] for i in range(1, m) for j in range(1, n))
7575
```
7676

7777
### **Java**
@@ -94,6 +94,62 @@ class Solution {
9494
}
9595
```
9696

97+
### **C++**
98+
99+
```cpp
100+
class Solution {
101+
public:
102+
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
103+
int m = matrix.size(), n = matrix[0].size();
104+
for (int i = 1; i < m; ++i) {
105+
for (int j = 1; j < n; ++j) {
106+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
107+
return false;
108+
}
109+
}
110+
}
111+
return true;
112+
}
113+
};
114+
```
115+
116+
### **Go**
117+
118+
```go
119+
func isToeplitzMatrix(matrix [][]int) bool {
120+
m, n := len(matrix), len(matrix[0])
121+
for i := 1; i < m; i++ {
122+
for j := 1; j < n; j++ {
123+
if matrix[i][j] != matrix[i-1][j-1] {
124+
return false
125+
}
126+
}
127+
}
128+
return true
129+
}
130+
```
131+
132+
### **JavaScript**
133+
134+
```js
135+
/**
136+
* @param {number[][]} matrix
137+
* @return {boolean}
138+
*/
139+
var isToeplitzMatrix = function (matrix) {
140+
const m = matrix.length;
141+
const n = matrix[0].length;
142+
for (let i = 1; i < m; ++i) {
143+
for (let j = 1; j < n; ++j) {
144+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
145+
return false;
146+
}
147+
}
148+
}
149+
return true;
150+
};
151+
```
152+
97153
### **...**
98154

99155
```

‎solution/0700-0799/0766.Toeplitz Matrix/README_EN.md

+57-5
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,7 @@ The diagonal &quot;[1, 2]&quot; has different elements.
5757
class Solution:
5858
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
5959
m, n = len(matrix), len(matrix[0])
60-
for i in range(1, m):
61-
for j in range(1, n):
62-
if matrix[i][j] != matrix[i - 1][j - 1]:
63-
return False
64-
return True
60+
return all(matrix[i][j] == matrix[i - 1][j - 1] for i in range(1, m) for j in range(1, n))
6561
```
6662

6763
### **Java**
@@ -82,6 +78,62 @@ class Solution {
8278
}
8379
```
8480

81+
### **C++**
82+
83+
```cpp
84+
class Solution {
85+
public:
86+
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
87+
int m = matrix.size(), n = matrix[0].size();
88+
for (int i = 1; i < m; ++i) {
89+
for (int j = 1; j < n; ++j) {
90+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
91+
return false;
92+
}
93+
}
94+
}
95+
return true;
96+
}
97+
};
98+
```
99+
100+
### **Go**
101+
102+
```go
103+
func isToeplitzMatrix(matrix [][]int) bool {
104+
m, n := len(matrix), len(matrix[0])
105+
for i := 1; i < m; i++ {
106+
for j := 1; j < n; j++ {
107+
if matrix[i][j] != matrix[i-1][j-1] {
108+
return false
109+
}
110+
}
111+
}
112+
return true
113+
}
114+
```
115+
116+
### **JavaScript**
117+
118+
```js
119+
/**
120+
* @param {number[][]} matrix
121+
* @return {boolean}
122+
*/
123+
var isToeplitzMatrix = function (matrix) {
124+
const m = matrix.length;
125+
const n = matrix[0].length;
126+
for (let i = 1; i < m; ++i) {
127+
for (let j = 1; j < n; ++j) {
128+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
129+
return false;
130+
}
131+
}
132+
}
133+
return true;
134+
};
135+
```
136+
85137
### **...**
86138

87139
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
4+
int m = matrix.size(), n = matrix[0].size();
5+
for (int i = 1; i < m; ++i) {
6+
for (int j = 1; j < n; ++j) {
7+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
8+
return false;
9+
}
10+
}
11+
}
12+
return true;
13+
}
14+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
func isToeplitzMatrix(matrix [][]int) bool {
2+
m, n := len(matrix), len(matrix[0])
3+
for i := 1; i < m; i++ {
4+
for j := 1; j < n; j++ {
5+
if matrix[i][j] != matrix[i-1][j-1] {
6+
return false
7+
}
8+
}
9+
}
10+
return true
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {boolean}
4+
*/
5+
var isToeplitzMatrix = function (matrix) {
6+
const m = matrix.length;
7+
const n = matrix[0].length;
8+
for (let i = 1; i < m; ++i) {
9+
for (let j = 1; j < n; ++j) {
10+
if (matrix[i][j] != matrix[i - 1][j - 1]) {
11+
return false;
12+
}
13+
}
14+
}
15+
return true;
16+
};
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
class Solution:
22
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
33
m, n = len(matrix), len(matrix[0])
4-
for i in range(1, m):
5-
for j in range(1, n):
6-
if matrix[i][j] != matrix[i - 1][j - 1]:
7-
return False
8-
return True
4+
return all(matrix[i][j] == matrix[i - 1][j - 1] for i in range(1, m) for j in range(1, n))

0 commit comments

Comments
 (0)