File tree Expand file tree Collapse file tree 2 files changed +47
-0
lines changed
split-array-with-same-average Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -45,6 +45,8 @@ Step 2. Add the dependency
45
45
46
46
<summary >展开查看</summary >
47
47
48
+ https://leetcode.cn/problems/split-array-with-same-average
49
+
48
50
https://leetcode.cn/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level
49
51
50
52
https://leetcode.cn/problems/B1IidL
Original file line number Diff line number Diff line change
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 ;
You can’t perform that action at this time.
0 commit comments