Skip to content

Commit 3d61a38

Browse files
authored
feat: add javascript solution to lcci problem: No.08.03. Magic Index … (#386)
* feat: add javascript solution to lcci problem: No.08.03. Magic Index LCCI * feat: add javascript solution to lcci problem: No.1863.Sum of All Subset XOR Totals
1 parent d4159fb commit 3d61a38

File tree

6 files changed

+131
-0
lines changed

6 files changed

+131
-0
lines changed

lcci/08.03.Magic Index/README.md

+21
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,27 @@
4848

4949
```
5050

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+
5172
### **...**
5273

5374
```

lcci/08.03.Magic Index/README_EN.md

+21
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,27 @@
4848

4949
```
5050

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+
5172
### **...**
5273

5374
```

lcci/08.03.Magic Index/Solution.js

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
}

solution/1800-1899/1863.Sum of All Subset XOR Totals/README.md

+26
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,32 @@
8787

8888
```
8989

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+
90116
### **...**
91117

92118
```

solution/1800-1899/1863.Sum of All Subset XOR Totals/README_EN.md

+26
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,32 @@
8080

8181
```
8282

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+
83109
### **...**
84110

85111
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}

0 commit comments

Comments
 (0)