Skip to content

Commit 72bd7c4

Browse files
committed
feat: add solutions to lc problems: No.2341,2342
* No.2341.Maximum Number of Pairs in Array * No.2342.Max Sum of a Pair With Equal Sum of Digits
1 parent f43e6c5 commit 72bd7c4

File tree

12 files changed

+383
-171
lines changed

12 files changed

+383
-171
lines changed

solution/2200-2299/2286.Booking Concert Tickets in Groups/Solution.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ def pushup(self, u):
6060

6161

6262
class BookMyShow:
63-
6463
def __init__(self, n: int, m: int):
6564
self.n = n
6665
self.tree = SegmentTree(n, m)

solution/2200-2299/2287.Rearrange Characters to Make Target String/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

6161
我们统计字符串 `s``target` 中每个字符出现的次数,记为 `cnt1``cnt2`。对于 `target` 中的每个字符,我们计算 `cnt1` 中该字符出现的次数除以 `cnt2` 中该字符出现的次数,取最小值即可。
6262

63-
时间复杂度 $O(n + m)$,空间复杂度 $O(C)$。其中 $n$ 和 $m$ 分别是字符串 `s``target` 的长度。$C$ 是字符集的大小,本题中 $C=26$。
63+
时间复杂度 $O(n + m)$,空间复杂度 $O(C)$。其中 $n$ 和 $m$ 分别是字符串 `s``target` 的长度。$C$ 是字符集的大小,本题中 $C=26$。
6464

6565
<!-- tabs:start -->
6666

solution/2300-2399/2341.Maximum Number of Pairs in Array/README.md

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ nums[0] 和 nums[1] 形成一个数对,并从 nums 中移除,nums = [2] 。
5656

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

59+
**方法一:计数**
60+
61+
我们可以统计数组 `nums` 中每个数字出现的次数,记录在数组 `cnt` 中。然后遍历数组 `cnt`,对于每个数字 $v$,如果 $v$ 出现的次数大于等于 $2$,则可以从数组中选出两个 $v$ 形成一个数对,此时我们将 $v$ 出现的次数除以 $2$,即可得到可以形成的数对数目,然后将这个数对数目加到答案中。
62+
63+
最终剩余的数字个数为数组 `nums` 的长度减去可以形成的数对数目乘以 $2$。
64+
65+
时间复杂度 $O(n)$,空间复杂度 $O(C)$。其中 $n$ 为数组 `nums` 的长度,而 $C$ 为数组 `nums` 中数字的范围。本题中 $C = 101$。
66+
5967
<!-- tabs:start -->
6068

6169
### **Python3**
@@ -97,13 +105,14 @@ class Solution {
97105
public:
98106
vector<int> numberOfPairs(vector<int>& nums) {
99107
vector<int> cnt(101);
100-
for (int v : nums) ++cnt[v];
108+
for (int& v : nums) {
109+
++cnt[v];
110+
}
101111
int s = 0;
102-
for (int v : cnt) s += v / 2;
103-
vector<int> ans(2);
104-
ans[0] = s;
105-
ans[1] = nums.size() - s * 2;
106-
return ans;
112+
for (int& v : cnt) {
113+
s += v >> 1;
114+
}
115+
return {s, (int) nums.size() - s * 2};
107116
}
108117
};
109118
```
@@ -136,7 +145,6 @@ function numberOfPairs(nums: number[]): number[] {
136145
const sum = count.reduce((r, v) => r + (v >> 1), 0);
137146
return [sum, n - sum * 2];
138147
}
139-
140148
```
141149

142150
### **Rust**
@@ -181,6 +189,23 @@ int *numberOfPairs(int *nums, int numsSize, int *returnSize) {
181189
}
182190
```
183191
192+
### **JavaScript**
193+
194+
```js
195+
/**
196+
* @param {number[]} nums
197+
* @return {number[]}
198+
*/
199+
var numberOfPairs = function (nums) {
200+
const cnt = new Array(101).fill(0);
201+
for (const v of nums) {
202+
++cnt[v];
203+
}
204+
const s = cnt.reduce((a, b) => a + (b >> 1), 0);
205+
return [s, nums.length - s * 2];
206+
};
207+
```
208+
184209
### **...**
185210

186211
```

solution/2300-2399/2341.Maximum Number of Pairs in Array/README_EN.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,14 @@ class Solution {
9292
public:
9393
vector<int> numberOfPairs(vector<int>& nums) {
9494
vector<int> cnt(101);
95-
for (int v : nums) ++cnt[v];
95+
for (int& v : nums) {
96+
++cnt[v];
97+
}
9698
int s = 0;
97-
for (int v : cnt) s += v / 2;
98-
vector<int> ans(2);
99-
ans[0] = s;
100-
ans[1] = nums.size() - s * 2;
101-
return ans;
99+
for (int& v : cnt) {
100+
s += v >> 1;
101+
}
102+
return {s, (int) nums.size() - s * 2};
102103
}
103104
};
104105
```
@@ -131,7 +132,6 @@ function numberOfPairs(nums: number[]): number[] {
131132
const sum = count.reduce((r, v) => r + (v >> 1), 0);
132133
return [sum, n - sum * 2];
133134
}
134-
135135
```
136136

137137
### **Rust**
@@ -176,6 +176,23 @@ int *numberOfPairs(int *nums, int numsSize, int *returnSize) {
176176
}
177177
```
178178
179+
### **JavaScript**
180+
181+
```js
182+
/**
183+
* @param {number[]} nums
184+
* @return {number[]}
185+
*/
186+
var numberOfPairs = function (nums) {
187+
const cnt = new Array(101).fill(0);
188+
for (const v of nums) {
189+
++cnt[v];
190+
}
191+
const s = cnt.reduce((a, b) => a + (b >> 1), 0);
192+
return [s, nums.length - s * 2];
193+
};
194+
```
195+
179196
### **...**
180197

181198
```

solution/2300-2399/2341.Maximum Number of Pairs in Array/Solution.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ class Solution {
22
public:
33
vector<int> numberOfPairs(vector<int>& nums) {
44
vector<int> cnt(101);
5-
for (int v : nums) ++cnt[v];
5+
for (int& v : nums) {
6+
++cnt[v];
7+
}
68
int s = 0;
7-
for (int v : cnt) s += v / 2;
8-
vector<int> ans(2);
9-
ans[0] = s;
10-
ans[1] = nums.size() - s * 2;
11-
return ans;
9+
for (int& v : cnt) {
10+
s += v >> 1;
11+
}
12+
return {s, (int) nums.size() - s * 2};
1213
}
1314
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var numberOfPairs = function (nums) {
6+
const cnt = new Array(101).fill(0);
7+
for (const v of nums) {
8+
++cnt[v];
9+
}
10+
const s = cnt.reduce((a, b) => a + (b >> 1), 0);
11+
return [s, nums.length - s * 2];
12+
};

0 commit comments

Comments
 (0)