Skip to content

Commit e59d00b

Browse files
committed
feat: add new lc problems and solutions
1 parent 5249bcc commit e59d00b

File tree

29 files changed

+2201
-1303
lines changed

29 files changed

+2201
-1303
lines changed

solution/0500-0599/0532.K-diff Pairs in an Array/README.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,92 @@
5858

5959
<!-- 这里可写通用的实现逻辑 -->
6060

61+
**方法一:哈希表**
62+
63+
由于 $k$ 是一个定值,因此用哈希表 $ans$ 记录数对的较小值,就能够确定较大的值。最后返回 ans 的大小作为答案。
64+
65+
遍历数组 $nums$,当前遍历到的数 $nums[j]$,我们记为 $v$,用哈希表 $vis$ 记录此前遍历到的所有数字。若 $v-k$ 在 $vis$ 中,则将 $v-k$ 添加至 $ans$;若 $v+k$ 在 $vis$ 中,则将 $v$ 添加至 $ans$。
66+
67+
时间复杂度 $O(n)$,其中 $n$ 表示数组 $nums$ 的长度。
68+
6169
<!-- tabs:start -->
6270

6371
### **Python3**
6472

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

6775
```python
68-
76+
class Solution:
77+
def findPairs(self, nums: List[int], k: int) -> int:
78+
vis, ans = set(), set()
79+
for v in nums:
80+
if v - k in vis:
81+
ans.add(v - k)
82+
if v + k in vis:
83+
ans.add(v)
84+
vis.add(v)
85+
return len(ans)
6986
```
7087

7188
### **Java**
7289

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

7592
```java
93+
class Solution {
94+
public int findPairs(int[] nums, int k) {
95+
Set<Integer> vis = new HashSet<>();
96+
Set<Integer> ans = new HashSet<>();
97+
for (int v : nums) {
98+
if (vis.contains(v - k)) {
99+
ans.add(v - k);
100+
}
101+
if (vis.contains(v + k)) {
102+
ans.add(v);
103+
}
104+
vis.add(v);
105+
}
106+
return ans.size();
107+
}
108+
}
109+
```
110+
111+
### **C++**
112+
113+
```cpp
114+
class Solution {
115+
public:
116+
int findPairs(vector<int>& nums, int k) {
117+
unordered_set<int> vis;
118+
unordered_set<int> ans;
119+
for (int& v : nums)
120+
{
121+
if (vis.count(v - k)) ans.insert(v - k);
122+
if (vis.count(v + k)) ans.insert(v);
123+
vis.insert(v);
124+
}
125+
return ans.size();
126+
}
127+
};
128+
```
76129
130+
### **Go**
131+
132+
```go
133+
func findPairs(nums []int, k int) int {
134+
vis := map[int]bool{}
135+
ans := map[int]bool{}
136+
for _, v := range nums {
137+
if vis[v-k] {
138+
ans[v-k] = true
139+
}
140+
if vis[v+k] {
141+
ans[v] = true
142+
}
143+
vis[v] = true
144+
}
145+
return len(ans)
146+
}
77147
```
78148

79149
### **...**

solution/0500-0599/0532.K-diff Pairs in an Array/README_EN.md

+63-1
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,75 @@ Although we have two 1s in the input, we should only return the number of <stron
5858
### **Python3**
5959

6060
```python
61-
61+
class Solution:
62+
def findPairs(self, nums: List[int], k: int) -> int:
63+
vis, ans = set(), set()
64+
for v in nums:
65+
if v - k in vis:
66+
ans.add(v - k)
67+
if v + k in vis:
68+
ans.add(v)
69+
vis.add(v)
70+
return len(ans)
6271
```
6372

6473
### **Java**
6574

6675
```java
76+
class Solution {
77+
public int findPairs(int[] nums, int k) {
78+
Set<Integer> vis = new HashSet<>();
79+
Set<Integer> ans = new HashSet<>();
80+
for (int v : nums) {
81+
if (vis.contains(v - k)) {
82+
ans.add(v - k);
83+
}
84+
if (vis.contains(v + k)) {
85+
ans.add(v);
86+
}
87+
vis.add(v);
88+
}
89+
return ans.size();
90+
}
91+
}
92+
```
93+
94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
int findPairs(vector<int>& nums, int k) {
100+
unordered_set<int> vis;
101+
unordered_set<int> ans;
102+
for (int& v : nums)
103+
{
104+
if (vis.count(v - k)) ans.insert(v - k);
105+
if (vis.count(v + k)) ans.insert(v);
106+
vis.insert(v);
107+
}
108+
return ans.size();
109+
}
110+
};
111+
```
67112
113+
### **Go**
114+
115+
```go
116+
func findPairs(nums []int, k int) int {
117+
vis := map[int]bool{}
118+
ans := map[int]bool{}
119+
for _, v := range nums {
120+
if vis[v-k] {
121+
ans[v-k] = true
122+
}
123+
if vis[v+k] {
124+
ans[v] = true
125+
}
126+
vis[v] = true
127+
}
128+
return len(ans)
129+
}
68130
```
69131

70132
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
int findPairs(vector<int>& nums, int k) {
4+
unordered_set<int> vis;
5+
unordered_set<int> ans;
6+
for (int& v : nums)
7+
{
8+
if (vis.count(v - k)) ans.insert(v - k);
9+
if (vis.count(v + k)) ans.insert(v);
10+
vis.insert(v);
11+
}
12+
return ans.size();
13+
}
14+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func findPairs(nums []int, k int) int {
2+
vis := map[int]bool{}
3+
ans := map[int]bool{}
4+
for _, v := range nums {
5+
if vis[v-k] {
6+
ans[v-k] = true
7+
}
8+
if vis[v+k] {
9+
ans[v] = true
10+
}
11+
vis[v] = true
12+
}
13+
return len(ans)
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int findPairs(int[] nums, int k) {
3+
Set<Integer> vis = new HashSet<>();
4+
Set<Integer> ans = new HashSet<>();
5+
for (int v : nums) {
6+
if (vis.contains(v - k)) {
7+
ans.add(v - k);
8+
}
9+
if (vis.contains(v + k)) {
10+
ans.add(v);
11+
}
12+
vis.add(v);
13+
}
14+
return ans.size();
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def findPairs(self, nums: List[int], k: int) -> int:
3+
vis, ans = set(), set()
4+
for v in nums:
5+
if v - k in vis:
6+
ans.add(v - k)
7+
if v + k in vis:
8+
ans.add(v)
9+
vis.add(v)
10+
return len(ans)

solution/2000-2099/2017.Grid Game/README.md

+79-1
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,93 @@
7070
<!-- 这里可写当前语言的特殊实现逻辑 -->
7171

7272
```python
73-
73+
class Solution:
74+
def gridGame(self, grid: List[List[int]]) -> int:
75+
ans = inf
76+
s1, s2 = sum(grid[0]), 0
77+
for j, v in enumerate(grid[0]):
78+
s1 -= v
79+
ans = min(ans, max(s1, s2))
80+
s2 += grid[1][j]
81+
return ans
7482
```
7583

7684
### **Java**
7785

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

8088
```java
89+
class Solution {
90+
public long gridGame(int[][] grid) {
91+
long ans = Long.MAX_VALUE;
92+
long s1 = 0, s2 = 0;
93+
for (int v : grid[0]) {
94+
s1 += v;
95+
}
96+
int n = grid[0].length;
97+
for (int j = 0; j < n; ++j) {
98+
s1 -= grid[0][j];
99+
ans = Math.min(ans, Math.max(s1, s2));
100+
s2 += grid[1][j];
101+
}
102+
return ans;
103+
}
104+
}
105+
```
106+
107+
### **C++**
108+
109+
```cpp
110+
using ll = long long;
111+
112+
class Solution {
113+
public:
114+
long long gridGame(vector<vector<int>>& grid) {
115+
ll ans = LONG_MAX;
116+
int n = grid[0].size();
117+
ll s1 = 0, s2 = 0;
118+
for (int& v : grid[0]) s1 += v;
119+
for (int j = 0; j < n; ++j)
120+
{
121+
s1 -= grid[0][j];
122+
ans = min(ans, max(s1, s2));
123+
s2 += grid[1][j];
124+
}
125+
return ans;
126+
}
127+
};
128+
```
81129
130+
### **Go**
131+
132+
```go
133+
func gridGame(grid [][]int) int64 {
134+
ans := math.MaxInt64
135+
s1, s2 := 0, 0
136+
for _, v := range grid[0] {
137+
s1 += v
138+
}
139+
for j, v := range grid[0] {
140+
s1 -= v
141+
ans = min(ans, max(s1, s2))
142+
s2 += grid[1][j]
143+
}
144+
return int64(ans)
145+
}
146+
147+
func max(a, b int) int {
148+
if a > b {
149+
return a
150+
}
151+
return b
152+
}
153+
154+
func min(a, b int) int {
155+
if a < b {
156+
return a
157+
}
158+
return b
159+
}
82160
```
83161

84162
### **...**

0 commit comments

Comments
 (0)