Skip to content

Commit 330cbc0

Browse files
author
lewis617
committed
Move rob from ArrayList to LeetCode
1 parent b0d37c2 commit 330cbc0

File tree

10 files changed

+92
-71
lines changed

10 files changed

+92
-71
lines changed

ArrayList/ArrayList.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -130,29 +130,6 @@ function ArrayList() {
130130
return -1;
131131
};
132132

133-
var rob = function (array) {
134-
var last = 0,
135-
now = 0;
136-
for (var i = 0; i < array.length; i++) {
137-
var temp = last;
138-
last = now;
139-
now = Math.max(temp + array[i], now);
140-
}
141-
142-
return now;
143-
};
144-
145-
this.simpleRob = function () {
146-
return rob(array);
147-
};
148-
149-
this.circleRob = function () {
150-
if (array.length === 1) {
151-
return array[0];
152-
}
153-
return Math.max(rob(array.slice(1)), rob(array.slice(0, array.length - 1)));
154-
};
155-
156133
this.findContentChildren = function (cookies) {
157134
this.quickSort();
158135
cookies.sort(function (a, b) {

ArrayList/ArrayList.test.js

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,30 +42,6 @@ test('ArrayList', function () {
4242
expect(array.binarySearch(6)).toBe(-1);
4343
expect(array.binarySearch(2)).toBe(1);
4444

45-
function createRobArray() {
46-
var array = new ArrayList();
47-
array.insert(2);
48-
array.insert(0);
49-
array.insert(0);
50-
array.insert(4);
51-
array.insert(5);
52-
return array;
53-
}
54-
55-
array = createRobArray();
56-
expect(array.simpleRob()).toBe(7);
57-
expect(array.circleRob()).toBe(6);
58-
59-
function createOneLengthRobArray() {
60-
var array = new ArrayList();
61-
array.insert(2);
62-
return array;
63-
}
64-
65-
array = createOneLengthRobArray();
66-
expect(array.simpleRob()).toBe(2);
67-
expect(array.circleRob()).toBe(2);
68-
6945
array = createNonSortedArray();
7046
expect(array.findContentChildren([1, 1])).toBe(1);
7147
expect(array.findContentChildren([1, 2, 3])).toBe(3);

LeetCode/__tests__/rob1.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var rob1 = require('../rob1');
2+
3+
test('rob1', function () {
4+
expect(rob1([2, 0, 0, 4, 5])).toBe(7);
5+
});

LeetCode/__tests__/rob2.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var rob2 = require('../rob2');
2+
3+
test('rob2', function () {
4+
expect(rob2([2])).toBe(2);
5+
expect(rob2([2, 0, 0, 4, 5])).toBe(6);
6+
});

LeetCode/__tests__/rob3.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var rob3 = require('../rob3');
2+
var BinarySearchTree = require('../../Tree/BinarySearchTree');
3+
4+
test('rob3', function () {
5+
var binarySearchTree = new BinarySearchTree();
6+
7+
binarySearchTree.insert(11);
8+
binarySearchTree.insert(7);
9+
binarySearchTree.insert(13);
10+
binarySearchTree.insert(5);
11+
binarySearchTree.insert(3);
12+
binarySearchTree.insert(9);
13+
14+
expect(rob3(binarySearchTree.getRoot())).toBe(27);
15+
});

LeetCode/rob1.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function (nums) {
6+
var last = 0,
7+
now = 0;
8+
for (var i = 0; i < nums.length; i++) {
9+
var temp = last;
10+
last = now;
11+
now = Math.max(temp + nums[i], now);
12+
}
13+
14+
return now;
15+
};
16+
17+
module.exports = rob;

LeetCode/rob2.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var rob = function(nums) {
6+
var rob1 = require('./rob1');
7+
8+
if (nums.length === 1) {
9+
return nums[0];
10+
}
11+
return Math.max(rob1(nums.slice(1)), rob1(nums.slice(0, nums.length - 1)));
12+
};
13+
14+
module.exports = rob;

LeetCode/rob3.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(key) {
4+
* this.val = key;
5+
* this.left = this.right = null;
6+
* }
7+
*/
8+
/**
9+
* @param {TreeNode} root
10+
* @return {number}
11+
*/
12+
var rob = function(root) {
13+
var dfs = function (node) {
14+
if (node === null) {
15+
return [null, null];
16+
}
17+
var left = dfs(node.left);
18+
var right = dfs(node.right);
19+
var res = [];
20+
res[0] = left[1] + right[1] + node.key;
21+
res[1] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);
22+
return res;
23+
};
24+
25+
var num = dfs(root);
26+
return Math.max(num[0], num[1]);
27+
};
28+
29+
module.exports = rob;

Tree/BinarySearchTree.js

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -133,27 +133,6 @@ function BinarySearchTree() {
133133
}
134134
}
135135
};
136-
/**
137-
* 打家劫舍问题:房屋按二叉树来排列,
138-
* 不允许在同一晚打劫相邻的两家,
139-
* 求能打劫到的最大钱财数量。
140-
*/
141-
this.rob = function () {
142-
var dfs = function(node){
143-
if(node === null){
144-
return [null, null];
145-
}
146-
var left = dfs(node.left);
147-
var right = dfs(node.right);
148-
var res = [];
149-
res[0] = left[1] + right[1] + node.key;
150-
res[1] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);
151-
return res;
152-
};
153-
154-
var num = dfs(root);
155-
return Math.max(num[0], num[1]);
156-
};
157136

158137
var minNode = function (node) {
159138
if (node) {
@@ -219,7 +198,7 @@ function BinarySearchTree() {
219198
return node;
220199
} else {
221200
if (node.left === null && node.right === null) {
222-
if(node ===root){
201+
if (node === root) {
223202
root = null;
224203
}
225204
node = null;
@@ -250,6 +229,10 @@ function BinarySearchTree() {
250229
});
251230
return keyList;
252231
};
232+
233+
this.getRoot = function () {
234+
return root;
235+
}
253236
}
254237

255238
module.exports = BinarySearchTree;

Tree/BinarySearchTree.test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ test('BinarySearchTree', function () {
1717
expect(binarySearchTree.values('postOrderTraverse')).toEqual([3, 5, 9, 7, 13, 11]);
1818
expect(binarySearchTree.values('postOrderTraverseUnRec')).toEqual([3, 5, 9, 7, 13, 11]);
1919

20-
expect(binarySearchTree.rob()).toBe(27);
21-
2220
expect(binarySearchTree.min()).toBe(3);
2321
expect(binarySearchTree.max()).toBe(13);
2422
expect(binarySearchTree.search(3)).toBeTruthy();
@@ -50,4 +48,5 @@ test('BinarySearchTree', function () {
5048
expect(binarySearchTree.min()).toBe(null);
5149
expect(binarySearchTree.max()).toBe(null);
5250
expect(binarySearchTree.remove(11)).toBe(null);
51+
expect(binarySearchTree.getRoot()).toBe(null)
5352
});

0 commit comments

Comments
 (0)