File tree 6 files changed +131
-0
lines changed
solution/1800-1899/1863.Sum of All Subset XOR Totals
6 files changed +131
-0
lines changed Original file line number Diff line number Diff line change 48
48
49
49
```
50
50
51
+ ### ** JavaScript**
52
+
53
+ ``` js
54
+ /**
55
+ * @param {number[]} nums
56
+ * @return {number}
57
+ */
58
+ var findMagicIndex = function (nums ) {
59
+ return helper (nums, 0 , nums .length - 1 );
60
+ };
61
+
62
+ function helper (nums , left , right ) {
63
+ if (left > right) return - 1 ;
64
+ let mid = Math .floor ((left + right) / 2 );
65
+ let leftIndex = helper (nums, left, mid - 1 );
66
+ if (leftIndex != - 1 ) return leftIndex;
67
+ if (nums[mid] == mid) return mid;
68
+ return helper (nums, mid + 1 , right);
69
+ }
70
+ ```
71
+
51
72
### ** ...**
52
73
53
74
```
Original file line number Diff line number Diff line change 48
48
49
49
```
50
50
51
+ ### ** JavaScript**
52
+
53
+ ``` js
54
+ /**
55
+ * @param {number[]} nums
56
+ * @return {number}
57
+ */
58
+ var findMagicIndex = function (nums ) {
59
+ return helper (nums, 0 , nums .length - 1 );
60
+ };
61
+
62
+ function helper (nums , left , right ) {
63
+ if (left > right) return - 1 ;
64
+ let mid = Math .floor ((left + right) / 2 );
65
+ let leftIndex = helper (nums, left, mid - 1 );
66
+ if (leftIndex != - 1 ) return leftIndex;
67
+ if (nums[mid] == mid) return mid;
68
+ return helper (nums, mid + 1 , right);
69
+ }
70
+ ```
71
+
51
72
### ** ...**
52
73
53
74
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+ var findMagicIndex = function ( nums ) {
6
+ return helper ( nums , 0 , nums . length - 1 ) ;
7
+ } ;
8
+
9
+ function helper ( nums , left , right ) {
10
+ if ( left > right ) return - 1 ;
11
+ let mid = Math . floor ( ( left + right ) / 2 ) ;
12
+ let leftIndex = helper ( nums , left , mid - 1 ) ;
13
+ if ( leftIndex != - 1 ) return leftIndex ;
14
+ if ( nums [ mid ] == mid ) return mid ;
15
+ return helper ( nums , mid + 1 , right ) ;
16
+ }
Original file line number Diff line number Diff line change 87
87
88
88
```
89
89
90
+ ### ** JavaScript**
91
+
92
+ ``` js
93
+ /**
94
+ * @param {number[]} nums
95
+ * @return {number}
96
+ */
97
+ var subsetXORSum = function (nums ) {
98
+ let res = [];
99
+ let prev = 0 ;
100
+ dfs (nums, 0 , prev, res);
101
+ return res .reduce ((a , c ) => a + c, 0 )
102
+ };
103
+
104
+ function dfs (nums , depth , prev , res ) {
105
+ res .push (prev);
106
+ for (let i = depth; i < nums .length ; i++ ) {
107
+ prev ^= nums[i];
108
+ depth++ ;
109
+ dfs (nums, depth, prev, res);
110
+ // bracktrack
111
+ prev ^= nums[i];
112
+ }
113
+ }
114
+ ```
115
+
90
116
### ** ...**
91
117
92
118
```
Original file line number Diff line number Diff line change 80
80
81
81
```
82
82
83
+ ### ** JavaScript**
84
+
85
+ ``` js
86
+ /**
87
+ * @param {number[]} nums
88
+ * @return {number}
89
+ */
90
+ var subsetXORSum = function (nums ) {
91
+ let res = [];
92
+ let prev = 0 ;
93
+ dfs (nums, 0 , prev, res);
94
+ return res .reduce ((a , c ) => a + c, 0 )
95
+ };
96
+
97
+ function dfs (nums , depth , prev , res ) {
98
+ res .push (prev);
99
+ for (let i = depth; i < nums .length ; i++ ) {
100
+ prev ^= nums[i];
101
+ depth++ ;
102
+ dfs (nums, depth, prev, res);
103
+ // bracktrack
104
+ prev ^= nums[i];
105
+ }
106
+ }
107
+ ```
108
+
83
109
### ** ...**
84
110
85
111
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } nums
3
+ * @return {number }
4
+ */
5
+ var subsetXORSum = function ( nums ) {
6
+ let res = [ ] ;
7
+ let prev = 0 ;
8
+ dfs ( nums , 0 , prev , res ) ;
9
+ return res . reduce ( ( a , c ) => a + c , 0 )
10
+ } ;
11
+
12
+ function dfs ( nums , depth , prev , res ) {
13
+ res . push ( prev ) ;
14
+ for ( let i = depth ; i < nums . length ; i ++ ) {
15
+ prev ^= nums [ i ] ;
16
+ depth ++ ;
17
+ dfs ( nums , depth , prev , res ) ;
18
+ // bracktrack
19
+ prev ^= nums [ i ] ;
20
+ }
21
+ }
You can’t perform that action at this time.
0 commit comments