Skip to content

Commit 522d64e

Browse files
committed
https://leetcode.cn/problems/split-array-with-same-average
1 parent 6b19b8c commit 522d64e

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ Step 2. Add the dependency
4545

4646
<summary>展开查看</summary>
4747

48+
https://leetcode.cn/problems/split-array-with-same-average
49+
4850
https://leetcode.cn/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level
4951

5052
https://leetcode.cn/problems/B1IidL
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
function splitArraySameAverage(nums: number[]): boolean {
2+
if (nums.length === 1) {
3+
return false;
4+
}
5+
const n = nums.length,
6+
m = Math.floor(n / 2);
7+
let sum = 0;
8+
for (const num of nums) {
9+
sum += num;
10+
}
11+
for (let i = 0; i < n; i++) {
12+
nums[i] = nums[i] * n - sum;
13+
}
14+
15+
const left: Set<number> = new Set();
16+
for (let i = 1; i < 1 << m; i++) {
17+
let tot = 0;
18+
for (let j = 0; j < m; j++) {
19+
if ((i & (1 << j)) !== 0) {
20+
tot += nums[j];
21+
}
22+
}
23+
if (tot === 0) {
24+
return true;
25+
}
26+
left.add(tot);
27+
}
28+
let rsum = 0;
29+
for (let i = m; i < n; i++) {
30+
rsum += nums[i];
31+
}
32+
for (let i = 1; i < 1 << (n - m); i++) {
33+
let tot = 0;
34+
for (let j = m; j < n; j++) {
35+
if ((i & (1 << (j - m))) != 0) {
36+
tot += nums[j];
37+
}
38+
}
39+
if (tot === 0 || (rsum !== tot && left.has(-tot))) {
40+
return true;
41+
}
42+
}
43+
return false;
44+
}
45+
export default splitArraySameAverage;

0 commit comments

Comments
 (0)