Skip to content

Commit 2e09015

Browse files
committed
feat: add solutions to lc problem: No.1738
No.1738.Find Kth Largest XOR Coordinate Value
1 parent fb7453f commit 2e09015

File tree

6 files changed

+203
-2
lines changed

6 files changed

+203
-2
lines changed

solution/1700-1799/1738.Find Kth Largest XOR Coordinate Value/README.md

+73-1
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,94 @@
5454

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

57+
二维前缀异或,然后求第 k 大的值即可。
58+
5759
<!-- tabs:start -->
5860

5961
### **Python3**
6062

6163
<!-- 这里可写当前语言的特殊实现逻辑 -->
6264

6365
```python
64-
66+
class Solution:
67+
def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
68+
m, n = len(matrix), len(matrix[0])
69+
s = [[0] * (n + 1) for _ in range(m + 1)]
70+
ans = []
71+
for i in range(m):
72+
for j in range(n):
73+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j]
74+
ans.append(s[i + 1][j + 1])
75+
return heapq.nlargest(k, ans)[-1]
6576
```
6677

6778
### **Java**
6879

6980
<!-- 这里可写当前语言的特殊实现逻辑 -->
7081

7182
```java
83+
class Solution {
84+
85+
public int kthLargestValue(int[][] matrix, int k) {
86+
int m = matrix.length, n = matrix[0].length;
87+
int[][] s = new int[m + 1][n + 1];
88+
List<Integer> ans = new ArrayList<>();
89+
for (int i = 0; i < m; ++i) {
90+
for (int j = 0; j < n; ++j) {
91+
s[i + 1][j + 1] =
92+
s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
93+
ans.add(s[i + 1][j + 1]);
94+
}
95+
}
96+
Collections.sort(ans);
97+
return ans.get(ans.size() - k);
98+
}
99+
}
100+
101+
```
102+
103+
### **C++**
104+
105+
```cpp
106+
class Solution {
107+
public:
108+
int kthLargestValue(vector<vector<int>>& matrix, int k) {
109+
int m = matrix.size(), n = matrix[0].size();
110+
vector<vector<int>> s(m + 1, vector<int>(n + 1));
111+
vector<int> ans;
112+
for (int i = 0; i < m; ++i)
113+
{
114+
for (int j = 0; j < n; ++j)
115+
{
116+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
117+
ans.push_back(s[i + 1][j + 1]);
118+
}
119+
}
120+
sort(ans.begin(), ans.end());
121+
return ans[ans.size() - k];
122+
}
123+
};
124+
```
72125
126+
### **Go**
127+
128+
```go
129+
func kthLargestValue(matrix [][]int, k int) int {
130+
m, n := len(matrix), len(matrix[0])
131+
s := make([][]int, m+1)
132+
for i := range s {
133+
s[i] = make([]int, n+1)
134+
}
135+
var ans []int
136+
for i := 0; i < m; i++ {
137+
for j := 0; j < n; j++ {
138+
s[i+1][j+1] = s[i+1][j] ^ s[i][j+1] ^ s[i][j] ^ matrix[i][j]
139+
ans = append(ans, s[i+1][j+1])
140+
}
141+
}
142+
sort.Ints(ans)
143+
return ans[len(ans)-k]
144+
}
73145
```
74146

75147
### **...**

solution/1700-1799/1738.Find Kth Largest XOR Coordinate Value/README_EN.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,83 @@
5757
### **Python3**
5858

5959
```python
60-
60+
class Solution:
61+
def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
62+
m, n = len(matrix), len(matrix[0])
63+
s = [[0] * (n + 1) for _ in range(m + 1)]
64+
ans = []
65+
for i in range(m):
66+
for j in range(n):
67+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j]
68+
ans.append(s[i + 1][j + 1])
69+
return heapq.nlargest(k, ans)[-1]
6170
```
6271

6372
### **Java**
6473

6574
```java
75+
class Solution {
76+
77+
public int kthLargestValue(int[][] matrix, int k) {
78+
int m = matrix.length, n = matrix[0].length;
79+
int[][] s = new int[m + 1][n + 1];
80+
List<Integer> ans = new ArrayList<>();
81+
for (int i = 0; i < m; ++i) {
82+
for (int j = 0; j < n; ++j) {
83+
s[i + 1][j + 1] =
84+
s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
85+
ans.add(s[i + 1][j + 1]);
86+
}
87+
}
88+
Collections.sort(ans);
89+
return ans.get(ans.size() - k);
90+
}
91+
}
92+
93+
```
94+
95+
### **C++**
96+
97+
```cpp
98+
class Solution {
99+
public:
100+
int kthLargestValue(vector<vector<int>>& matrix, int k) {
101+
int m = matrix.size(), n = matrix[0].size();
102+
vector<vector<int>> s(m + 1, vector<int>(n + 1));
103+
vector<int> ans;
104+
for (int i = 0; i < m; ++i)
105+
{
106+
for (int j = 0; j < n; ++j)
107+
{
108+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
109+
ans.push_back(s[i + 1][j + 1]);
110+
}
111+
}
112+
sort(ans.begin(), ans.end());
113+
return ans[ans.size() - k];
114+
}
115+
};
116+
```
66117
118+
### **Go**
119+
120+
```go
121+
func kthLargestValue(matrix [][]int, k int) int {
122+
m, n := len(matrix), len(matrix[0])
123+
s := make([][]int, m+1)
124+
for i := range s {
125+
s[i] = make([]int, n+1)
126+
}
127+
var ans []int
128+
for i := 0; i < m; i++ {
129+
for j := 0; j < n; j++ {
130+
s[i+1][j+1] = s[i+1][j] ^ s[i][j+1] ^ s[i][j] ^ matrix[i][j]
131+
ans = append(ans, s[i+1][j+1])
132+
}
133+
}
134+
sort.Ints(ans)
135+
return ans[len(ans)-k]
136+
}
67137
```
68138

69139
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int kthLargestValue(vector<vector<int>>& matrix, int k) {
4+
int m = matrix.size(), n = matrix[0].size();
5+
vector<vector<int>> s(m + 1, vector<int>(n + 1));
6+
vector<int> ans;
7+
for (int i = 0; i < m; ++i)
8+
{
9+
for (int j = 0; j < n; ++j)
10+
{
11+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
12+
ans.push_back(s[i + 1][j + 1]);
13+
}
14+
}
15+
sort(ans.begin(), ans.end());
16+
return ans[ans.size() - k];
17+
}
18+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func kthLargestValue(matrix [][]int, k int) int {
2+
m, n := len(matrix), len(matrix[0])
3+
s := make([][]int, m+1)
4+
for i := range s {
5+
s[i] = make([]int, n+1)
6+
}
7+
var ans []int
8+
for i := 0; i < m; i++ {
9+
for j := 0; j < n; j++ {
10+
s[i+1][j+1] = s[i+1][j] ^ s[i][j+1] ^ s[i][j] ^ matrix[i][j]
11+
ans = append(ans, s[i+1][j+1])
12+
}
13+
}
14+
sort.Ints(ans)
15+
return ans[len(ans)-k]
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public int kthLargestValue(int[][] matrix, int k) {
3+
int m = matrix.length, n = matrix[0].length;
4+
int[][] s = new int[m + 1][n + 1];
5+
List<Integer> ans = new ArrayList<>();
6+
for (int i = 0; i < m; ++i) {
7+
for (int j = 0; j < n; ++j) {
8+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j];
9+
ans.add(s[i + 1][j + 1]);
10+
}
11+
}
12+
Collections.sort(ans);
13+
return ans.get(ans.size() - k);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
3+
m, n = len(matrix), len(matrix[0])
4+
s = [[0] * (n + 1) for _ in range(m + 1)]
5+
ans = []
6+
for i in range(m):
7+
for j in range(n):
8+
s[i + 1][j + 1] = s[i + 1][j] ^ s[i][j + 1] ^ s[i][j] ^ matrix[i][j]
9+
ans.append(s[i + 1][j + 1])
10+
return heapq.nlargest(k, ans)[-1]

0 commit comments

Comments
 (0)