Skip to content

Commit 4151859

Browse files
committed
add more
1 parent 77db876 commit 4151859

8 files changed

+230
-78
lines changed

112 Path Sum.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,31 @@ var hasPathSum = function(root, sum) {
2424
}
2525

2626
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
27+
};
28+
29+
/**
30+
* Definition for a binary tree node.
31+
* function TreeNode(val) {
32+
* this.val = val;
33+
* this.left = this.right = null;
34+
* }
35+
*/
36+
/**
37+
* @param {TreeNode} root
38+
* @param {number} sum
39+
* @return {boolean}
40+
*/
41+
var hasPathSum = function(root, sum) {
42+
if (root === null) {
43+
return false;
44+
}
45+
46+
var left = root.left;
47+
var right = root.right;
48+
49+
if (left === null && right === null) {
50+
return root.val === sum;
51+
}
52+
53+
return hasPathSum(left, sum - root.val) || hasPathSum(right, sum - root.val);
2754
};

141 Linked List Cycle.js

Lines changed: 51 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,44 @@
22
// Language: Javascript
33
// Problem: https://leetcode.com/problems/linked-list-cycle/
44
// Author: Chihung Yu
5+
/**
6+
* Definition for singly-linked list.
7+
* function ListNode(val) {
8+
* this.val = val;
9+
* this.next = null;
10+
* }
11+
*/
12+
13+
/**
14+
* @param {ListNode} head
15+
* @return {boolean}
16+
*/
17+
// var hasCycle = function(head) {
18+
// if(head === null || head.next === null){
19+
// return false;
20+
// }
21+
22+
// var faster = head.next;
23+
// var slower = head;
24+
25+
// while(faster && slower){
26+
// if(faster.val === slower.val){
27+
// return true;
28+
// }
29+
// faster = faster.next;
30+
31+
// if(faster === null){
32+
// return false;
33+
// } else {
34+
// faster = faster.next;
35+
// }
36+
37+
// slower = slower.next;
38+
// }
39+
40+
// return false;
41+
// };
42+
543
/**
644
* Definition for singly-linked list.
745
* function ListNode(val) {
@@ -15,26 +53,27 @@
1553
* @return {boolean}
1654
*/
1755
var hasCycle = function(head) {
18-
if(head === null || head.next === null){
56+
if (head === null) {
1957
return false;
2058
}
59+
60+
var node1 = head;
61+
var node2 = head;
62+
node2 = node2.next;
2163

22-
var faster = head.next;
23-
var slower = head;
24-
25-
while(faster && slower){
26-
if(faster.val === slower.val){
64+
while(node1 !== null && node2 !== null) {
65+
if (node1.val === node2.val) {
2766
return true;
2867
}
29-
faster = faster.next;
68+
69+
node1 = node1.next;
70+
node2 = node2.next;
3071

31-
if(faster === null){
32-
return false;
33-
} else {
34-
faster = faster.next;
72+
if (node2 !== null) {
73+
node2 = node2.next;
3574
}
3675

37-
slower = slower.next;
76+
3877
}
3978

4079
return false;

190 Reverse Bits.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@
99
var reverseBits = function(n) {
1010
var result = 0;
1111

12-
for(var i = 0; i < 32; i++){
12+
for(var i = 0; i < 31; i++){
1313
result <<= 1;
1414
result |= n & 1;
15-
n >>= 1;
15+
16+
n >>>= 1;
17+
console.log(result, n);
1618
}
1719

1820
return Math.abs(result);
19-
};
21+
};
22+
23+
console.log(reverseBits(4294967295));

242 Valid Anagram.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,43 @@ var isAnagram = function(s, t) {
3838
}
3939

4040
return true;
41+
};
42+
43+
44+
45+
46+
/**
47+
* @param {string} s
48+
* @param {string} t
49+
* @return {boolean}
50+
*/
51+
var isAnagram = function(s, t) {
52+
if (s === null || t === null || s.length !== t.length) {
53+
return false;
54+
}
55+
56+
var hash = {};
57+
var i;
58+
for(i = 0; i < s.length; i++) {
59+
var sval = s[i];
60+
var tval = t[i];
61+
62+
if (hash[sval] === undefined) {
63+
hash[sval] = 0;
64+
}
65+
66+
if (hash[tval] === undefined) {
67+
hash[tval] = 0;
68+
}
69+
hash[sval]++;
70+
hash[tval]--;
71+
}
72+
73+
for(var j in hash) {
74+
if (hash[j] !== 0) {
75+
return false;
76+
}
77+
}
78+
79+
return true;
4180
};

26 Remove Duplicates from Sorted Array.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,25 @@ var removeDuplicates = function(nums) {
5858
};
5959

6060

61-
// [tricky]
61+
// [tricky]
62+
63+
/**
64+
* @param {number[]} nums
65+
* @return {number}
66+
*/
67+
var removeDuplicates = function(nums) {
68+
var hash = {};
69+
var cur = 0;
70+
71+
for(var i = 0; i < nums.length; i++) {
72+
var num = nums[i];
73+
74+
if (hash[num] === undefined) {
75+
hash[num] = true;
76+
nums[cur] = num;
77+
cur++;
78+
}
79+
}
80+
81+
return cur;
82+
};

278 First Bad Version.js

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
/**
1616
* Definition for isBadVersion()
17-
*
17+
*
1818
* @param {integer} version number
1919
* @return {boolean} whether the version is bad
2020
* isBadVersion = function(version) {
@@ -35,18 +35,57 @@ var solution = function(isBadVersion) {
3535
var beg = 0;
3636
var end = n;
3737
var lastBad;
38-
38+
3939
while(beg <= end) {
4040
var mid = beg + Math.floor((end - beg)/2);
4141
if(isBadVersion(mid)) {
4242
// everything including and after are bad version
4343
lastBad = mid;
4444
end = mid - 1;
4545
} else {
46-
beg = mid + 1;
46+
beg = mid + 1;
4747
}
4848
}
49-
49+
5050
return lastBad;
5151
};
52-
};
52+
};
53+
54+
55+
56+
/**
57+
* Definition for isBadVersion()
58+
*
59+
* @param {integer} version number
60+
* @return {boolean} whether the version is bad
61+
* isBadVersion = function(version) {
62+
* ...
63+
* };
64+
*/
65+
66+
/**
67+
* @param {function} isBadVersion()
68+
* @return {function}
69+
*/
70+
var solution = function(isBadVersion) {
71+
/**
72+
* @param {integer} n Total versions
73+
* @return {integer} The first bad version
74+
*/
75+
return function(n) {
76+
var left = 1;
77+
var right = n;
78+
79+
while (left < right) {
80+
var mid = left + Math.floor((right - left)/2);
81+
82+
if (isBadVersion(mid)) {
83+
right = mid;
84+
} else {
85+
left = mid + 1;
86+
}
87+
}
88+
89+
return left;
90+
};
91+
};

35 Search Insert Position.js

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,37 @@
22
// Language: Javascript
33
// Problem: https://leetcode.com/problems/search-insert-position/
44
// Author: Chihung Yu
5+
/**
6+
* @param {number[]} nums
7+
* @param {number} target
8+
* @return {number}
9+
*/
10+
// var searchInsert = function(nums, target) {
11+
// var left = 0;
12+
// var right = nums.length - 1;
13+
//
14+
// while(left <= right){
15+
// var mid = parseInt((left + right)/2);
16+
//
17+
// var val = nums[mid];
18+
//
19+
// if(val === target){
20+
// return mid;
21+
// } else if(val > target){
22+
// right = mid - 1;
23+
// } else {
24+
// left = mid + 1;
25+
// }
26+
// }
27+
//
28+
// if(nums[left] < target){
29+
// return left + 1;
30+
// } else {
31+
// return left;
32+
// }
33+
// };
34+
35+
536
/**
637
* @param {number[]} nums
738
* @param {number} target
@@ -10,24 +41,22 @@
1041
var searchInsert = function(nums, target) {
1142
var left = 0;
1243
var right = nums.length - 1;
13-
14-
while(left <= right){
15-
var mid = parseInt((left + right)/2);
16-
17-
var val = nums[mid];
18-
19-
if(val === target){
44+
45+
while (left < right) {
46+
var mid = left + Math.ceil((right - left)/2);
47+
48+
if (nums[mid] === target) {
2049
return mid;
21-
} else if(val > target){
50+
} else if (nums[mid] > target) {
2251
right = mid - 1;
2352
} else {
2453
left = mid + 1;
2554
}
2655
}
27-
28-
if(nums[left] < target){
56+
57+
if (nums[left] < target) {
2958
return left + 1;
3059
} else {
3160
return left;
3261
}
33-
};
62+
}

0 commit comments

Comments
 (0)