Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c1aec19

Browse files
committedMay 11, 2022
Run Prettier Batch 3
1 parent d7cda53 commit c1aec19

24 files changed

+391
-371
lines changed
 

‎LeetcodeProblems/Algorithms/Implement_stack_using_queues.js

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,44 +24,42 @@ Depending on your language, queue may not be supported natively. You may simulat
2424
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
2525
*/
2626

27-
class MyStack {
27+
class MyStack {
2828
constructor() {
2929
this.q1 = [];
3030
this.q2 = [];
31-
};
31+
}
3232

3333
push(elem) {
34-
if(this.q1.length > 0) {
34+
if (this.q1.length > 0) {
3535
this.q1.push(elem);
3636
} else {
37-
this.q2.push(elem);
37+
this.q2.push(elem);
3838
}
39-
};
39+
}
4040

4141
pop() {
42-
if(this.q1.length === 0 && this.q2.length === 0)
43-
return null;
42+
if (this.q1.length === 0 && this.q2.length === 0) return null;
4443

45-
if(this.q1.length > 0) {
46-
while(this.q1.length > 1) {
44+
if (this.q1.length > 0) {
45+
while (this.q1.length > 1) {
4746
var elem = this.q1.shift();
4847
this.q2.push(elem);
4948
}
5049
return this.q1.shift();
5150
} else {
52-
while(this.q2.length > 1) {
51+
while (this.q2.length > 1) {
5352
var elem = this.q2.shift();
5453
this.q1.push(elem);
5554
}
5655
return this.q2.shift();
5756
}
58-
};
57+
}
5958

6059
top() {
61-
if(this.q1.length === 0 && this.q2.length === 0)
62-
return null;
60+
if (this.q1.length === 0 && this.q2.length === 0) return null;
6361

64-
if(this.q1.length > 0) {
62+
if (this.q1.length > 0) {
6563
var elem = this.pop();
6664
this.q2.push(elem);
6765
return elem;
@@ -70,11 +68,11 @@ class MyStack {
7068
this.q1.push(elem);
7169
return elem;
7270
}
73-
};
71+
}
7472

7573
empty() {
7674
return this.q1.length == 0 && this.q2.length === 0;
77-
};
75+
}
7876
}
7977

80-
module.exports.MyStack = MyStack;
78+
module.exports.MyStack = MyStack;

‎LeetcodeProblems/Algorithms/Kth_Largest_Element_in_an_Array.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,45 +16,43 @@ Note:
1616
You may assume k is always valid, 1 ≤ k ≤ array's length.
1717
*/
1818

19-
2019
/**
2120
* @param {number[]} nums
2221
* @param {number} k
2322
* @return {number}
2423
*/
25-
var findKthLargest = function(nums, k) {
26-
for(var i = Math.floor(nums.length/2) - 1; i >= 0; i--) {
24+
var findKthLargest = function (nums, k) {
25+
for (var i = Math.floor(nums.length / 2) - 1; i >= 0; i--) {
2726
heapify(nums, nums.length, i);
2827
}
29-
30-
for(var i = nums.length -1; i >= nums.length - k - 1 && i >= 0; i--) {
28+
29+
for (var i = nums.length - 1; i >= nums.length - k - 1 && i >= 0; i--) {
3130
swap(nums, 0, i);
3231
heapify(nums, i, 0);
3332
}
34-
33+
3534
return nums[nums.length - k];
36-
}
35+
};
3736

38-
var heapify = function(nums, length, i) {
37+
var heapify = function (nums, length, i) {
3938
var left = 2 * i + 1;
4039
var right = 2 * i + 2;
41-
42-
if(left >= length)
43-
return;
44-
45-
if(nums[i] < nums[left] && (right >= length || nums[left] > nums[right])) {
40+
41+
if (left >= length) return;
42+
43+
if (nums[i] < nums[left] && (right >= length || nums[left] > nums[right])) {
4644
swap(nums, left, i);
4745
heapify(nums, length, left);
48-
} else if(right < length && nums[right] > nums[i]) {
49-
swap(nums, right, i)
50-
heapify(nums, length, right)
46+
} else if (right < length && nums[right] > nums[i]) {
47+
swap(nums, right, i);
48+
heapify(nums, length, right);
5149
}
52-
}
50+
};
5351

54-
var swap = function(nums, a, b) {
52+
var swap = function (nums, a, b) {
5553
const temp = nums[a];
5654
nums[a] = nums[b];
5755
nums[b] = temp;
58-
}
56+
};
5957

6058
module.exports.findKthLargest = findKthLargest;

‎LeetcodeProblems/Algorithms/Linked_List_Cycle_II.js

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,26 @@ Follow up:
1010
Can you solve it without using extra space?
1111
*/
1212

13-
var ListNode = require('../../UtilsClasses/ListNode').ListNode;
13+
var ListNode = require("../../UtilsClasses/ListNode").ListNode;
1414

1515
// Optimal solution
1616
/**
17-
* @param {ListNode} head
18-
* @return {ListNode}
19-
*/
20-
var detectCycle = function(head) {
21-
if (head === null)
22-
return null;
17+
* @param {ListNode} head
18+
* @return {ListNode}
19+
*/
20+
var detectCycle = function (head) {
21+
if (head === null) return null;
2322

2423
var slow = head;
2524
var fast = head;
2625

27-
while(fast.next !== null && fast.next.next !== null) {
26+
while (fast.next !== null && fast.next.next !== null) {
2827
slow = slow.next;
2928
fast = fast.next.next;
30-
if(fast == slow) {
29+
if (fast == slow) {
3130
var a = head;
3231
var b = slow;
33-
while(a !== b) {
32+
while (a !== b) {
3433
a = a.next;
3534
b = b.next;
3635
}
@@ -41,18 +40,18 @@ var detectCycle = function(head) {
4140
};
4241

4342
// Naiver solution using a Set
44-
var detectCycle2 = function(head) {
45-
if(head === null || head.next === null) {
43+
var detectCycle2 = function (head) {
44+
if (head === null || head.next === null) {
4645
return null;
4746
}
4847
var setNodes = new Set();
4948
var iter = head;
50-
while(iter !== null) {
51-
if(setNodes.has(iter)) {
49+
while (iter !== null) {
50+
if (setNodes.has(iter)) {
5251
return iter;
5352
}
5453
setNodes.add(iter);
55-
iter = iter.next
54+
iter = iter.next;
5655
}
5756
return null;
5857
};

‎LeetcodeProblems/Algorithms/Longest_Consecutive_Sequence.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,33 @@ Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefor
1717
* @param {number[]} nums
1818
* @return {number}
1919
*/
20-
var longestConsecutive = function(nums) {
21-
if(nums.length === 0)
22-
return 0;
20+
var longestConsecutive = function (nums) {
21+
if (nums.length === 0) return 0;
2322
var setNums = new Set();
24-
for(var i = 0; i < nums.length; i++)
25-
setNums.add(nums[i]);
26-
23+
for (var i = 0; i < nums.length; i++) setNums.add(nums[i]);
24+
2725
var cons = 1;
2826
var currentCons = 1;
29-
for(var i = 0; i < nums.length; i++) {
27+
for (var i = 0; i < nums.length; i++) {
3028
var number = nums[i];
31-
if(setNums.has(number)) {
29+
if (setNums.has(number)) {
3230
setNums.delete(number);
33-
31+
3432
var prevNum = number - 1;
35-
while(setNums.has(prevNum)){
33+
while (setNums.has(prevNum)) {
3634
currentCons++;
3735
setNums.delete(prevNum);
3836
prevNum--;
3937
}
40-
38+
4139
var nextNum = number + 1;
42-
while(setNums.has(nextNum)){
40+
while (setNums.has(nextNum)) {
4341
currentCons++;
4442
setNums.delete(nextNum);
4543
nextNum++;
4644
}
47-
48-
if(currentCons > cons)
49-
cons = currentCons
45+
46+
if (currentCons > cons) cons = currentCons;
5047
}
5148
currentCons = 1;
5249
}

‎LeetcodeProblems/Algorithms/Longest_Palindromic_Substring.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,48 +19,55 @@ Output: "bb"
1919
* @param {string} s
2020
* @return {string}
2121
*/
22-
var longestPalindrome = function(str) {
23-
if(str.length == 0)
24-
return "";
25-
26-
var maxPal = 1;
27-
var posPalStart = 0;
22+
var longestPalindrome = function (str) {
23+
if (str.length == 0) return "";
24+
25+
var maxPal = 1;
26+
var posPalStart = 0;
2827
var currentPalStart = 0;
2928

30-
for(var i = 1; i < str.length; i++) {
31-
if(str.charAt(i - 1) == str.charAt(i)) {
29+
for (var i = 1; i < str.length; i++) {
30+
if (str.charAt(i - 1) == str.charAt(i)) {
3231
currentPalStart = i - 1;
33-
var currentPal = 2;
32+
var currentPal = 2;
3433
var iter = 1;
35-
while(i - iter - 1 >= 0 && i + iter < str.length && str.charAt(i - iter - 1) == str.charAt(i + iter)) {
34+
while (
35+
i - iter - 1 >= 0 &&
36+
i + iter < str.length &&
37+
str.charAt(i - iter - 1) == str.charAt(i + iter)
38+
) {
3639
currentPalStart = i - iter - 1;
3740
iter++;
3841
currentPal += 2;
3942
}
40-
}
41-
if(currentPal > maxPal) {
43+
}
44+
if (currentPal > maxPal) {
4245
maxPal = currentPal;
4346
posPalStart = currentPalStart;
4447
}
4548
}
46-
47-
for(var i = 1; i < str.length - 1; i++) {
48-
if(str.charAt(i - 1) == str.charAt(i + 1)) {
49+
50+
for (var i = 1; i < str.length - 1; i++) {
51+
if (str.charAt(i - 1) == str.charAt(i + 1)) {
4952
currentPal = 1;
5053
var iter = 1;
51-
while(i - iter >= 0 && i + iter < str.length && str.charAt(i - iter) == str.charAt(i + iter)) {
54+
while (
55+
i - iter >= 0 &&
56+
i + iter < str.length &&
57+
str.charAt(i - iter) == str.charAt(i + iter)
58+
) {
5259
currentPalStart = i - iter;
5360
iter++;
5461
currentPal += 2;
5562
}
5663
}
57-
if(currentPal > maxPal) {
64+
if (currentPal > maxPal) {
5865
maxPal = currentPal;
5966
posPalStart = currentPalStart;
6067
}
6168
}
62-
69+
6370
return str.slice(posPalStart, posPalStart + maxPal);
64-
}
71+
};
6572

66-
module.exports.longestPalindrome = longestPalindrome
73+
module.exports.longestPalindrome = longestPalindrome;

‎LeetcodeProblems/Algorithms/Majority_Element.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,27 @@ Output: 2
1818
Note: You should have a better solution than O(N)
1919
*/
2020

21-
2221
/**
2322
* @param {number[]} nums
2423
* @return {number}
2524
*/
26-
var majorityElement = function(nums) {
27-
if(nums.length === 0)
28-
return -1;
29-
25+
var majorityElement = function (nums) {
26+
if (nums.length === 0) return -1;
27+
3028
var candidate = nums[0];
3129
var proves = 1;
32-
33-
for(var i = 1; i < nums.length; i++) {
34-
if(nums[i] === candidate)
35-
proves++;
30+
31+
for (var i = 1; i < nums.length; i++) {
32+
if (nums[i] === candidate) proves++;
3633
else {
3734
proves--;
38-
if(proves === 0) {
35+
if (proves === 0) {
3936
candidate = nums[i];
4037
proves = 1;
4138
}
4239
}
4340
}
44-
41+
4542
return candidate;
4643
};
4744

‎LeetcodeProblems/Algorithms/Max_Area_Of_Island.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,37 @@ Note: The length of each dimension in the given grid does not exceed 50.
2727
* @param {number[][]} grid
2828
* @return {number}
2929
*/
30-
var maxAreaOfIsland = function(grid) {
30+
var maxAreaOfIsland = function (grid) {
3131
var maxArea = 0;
3232

33-
for(var i = 0; i < grid.length; i++) {
34-
for(var j = 0; j < grid[0].length; j++) {
35-
maxArea = Math.max(markIsland(i, j, grid), maxArea);
36-
}
33+
for (var i = 0; i < grid.length; i++) {
34+
for (var j = 0; j < grid[0].length; j++) {
35+
maxArea = Math.max(markIsland(i, j, grid), maxArea);
36+
}
3737
}
3838

3939
return maxArea;
4040
};
4141

42-
var markIsland = function(row, col, grid) {
43-
if(row < 0 || row >= grid.length || col < 0 || col >= grid[0].length || grid[row][col] == 0) {
44-
return 0;
42+
var markIsland = function (row, col, grid) {
43+
if (
44+
row < 0 ||
45+
row >= grid.length ||
46+
col < 0 ||
47+
col >= grid[0].length ||
48+
grid[row][col] == 0
49+
) {
50+
return 0;
4551
}
4652

4753
grid[row][col] = 0;
48-
return 1 + markIsland(row + 1, col, grid) + markIsland(row - 1, col, grid)
49-
+ markIsland(row, col +1, grid) + markIsland(row, col - 1, grid);
50-
}
54+
return (
55+
1 +
56+
markIsland(row + 1, col, grid) +
57+
markIsland(row - 1, col, grid) +
58+
markIsland(row, col + 1, grid) +
59+
markIsland(row, col - 1, grid)
60+
);
61+
};
5162

5263
module.exports.maxAreaOfIsland = maxAreaOfIsland;

‎LeetcodeProblems/Algorithms/Maximal_Square.js

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,53 +16,51 @@ Input:
1616
Output: 4
1717
*/
1818

19-
2019
/**
2120
* @param {character[][]} matrix
2221
* @return {number}
2322
*/
24-
var maximalSquare = function(matrix) {
23+
var maximalSquare = function (matrix) {
2524
var maxSquare = 0;
26-
for(var i = 0; i < matrix.length; i++) {
27-
for(var j = 0; j < matrix[0].length; j++) {
28-
if(matrix[i][j] === "1") { // found a 1
25+
for (var i = 0; i < matrix.length; i++) {
26+
for (var j = 0; j < matrix[0].length; j++) {
27+
if (matrix[i][j] === "1") {
28+
// found a 1
2929
const currentMaxSideLength = getCurrentMaxSideLength(matrix, i, j);
30-
if(currentMaxSideLength ** 2 > maxSquare)
30+
if (currentMaxSideLength ** 2 > maxSquare)
3131
maxSquare = currentMaxSideLength ** 2;
32-
}
32+
}
3333
}
3434
}
35-
35+
3636
return maxSquare;
3737
};
3838

39-
var getCurrentMaxSideLength = function(matrix, i, j) {
39+
var getCurrentMaxSideLength = function (matrix, i, j) {
4040
var max = 1;
41-
while(i + max < matrix.length && j + max < matrix[0].length) {
41+
while (i + max < matrix.length && j + max < matrix[0].length) {
4242
var lastRow = i + max;
4343
var lastCol = j + max;
44-
44+
4545
// check last column
46-
var iterRow = i;
47-
while(iterRow <= lastRow){
48-
if(matrix[iterRow][lastCol] === "0")
49-
return max;
50-
46+
var iterRow = i;
47+
while (iterRow <= lastRow) {
48+
if (matrix[iterRow][lastCol] === "0") return max;
49+
5150
iterRow++;
5251
}
53-
52+
5453
// check last row
5554
var iterCol = j;
56-
while(iterCol <= lastCol) {
57-
if(matrix[lastRow][iterCol] === "0")
58-
return max;
55+
while (iterCol <= lastCol) {
56+
if (matrix[lastRow][iterCol] === "0") return max;
5957
iterCol++;
6058
}
61-
59+
6260
max++;
6361
}
64-
62+
6563
return max;
66-
}
64+
};
6765

6866
module.exports.maximalSquare = maximalSquare;

‎LeetcodeProblems/Algorithms/Maximun_Subarray.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,21 @@ Follow up:
1414
1515
*/
1616

17-
18-
var maxSubArray = function(nums) {
19-
if(nums.length == 0)
20-
return 0;
17+
var maxSubArray = function (nums) {
18+
if (nums.length == 0) return 0;
2119
var maxSub = nums[0];
2220
var currentMax = nums[0];
23-
24-
for(var i = 1; i < nums.length; i++) {
21+
22+
for (var i = 1; i < nums.length; i++) {
2523
currentMax = max(nums[i], currentMax + nums[i]);
26-
if(currentMax > maxSub)
27-
maxSub = currentMax;
24+
if (currentMax > maxSub) maxSub = currentMax;
2825
}
2926

3027
return maxSub;
3128
};
3229

33-
var max = function(i, j) {
34-
return (i > j) ? i : j;
35-
}
30+
var max = function (i, j) {
31+
return i > j ? i : j;
32+
};
3633

3734
module.exports.maxSubArray = maxSubArray;

‎LeetcodeProblems/Algorithms/Min_Stack.js

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ minStack.top(); --> Returns 0.
2020
minStack.getMin(); --> Returns -2.
2121
*/
2222

23-
2423
class MinStack {
2524
constructor() {
2625
this.minStack = [];
@@ -30,47 +29,40 @@ class MinStack {
3029
}
3130

3231
push(value) {
33-
if(this.countStack === this.stack.length)
34-
this.stack.push(value);
35-
else
36-
this.stack[this.countStack] = value;
32+
if (this.countStack === this.stack.length) this.stack.push(value);
33+
else this.stack[this.countStack] = value;
3734
this.countStack++;
38-
35+
3936
const min = this.getMin();
40-
if(min === null || min >= value) {
41-
if(this.countMinStack === this.minStack.length)
37+
if (min === null || min >= value) {
38+
if (this.countMinStack === this.minStack.length)
4239
this.minStack.push(value);
43-
else
44-
this.minStack[this.countMinStack] = value;
40+
else this.minStack[this.countMinStack] = value;
4541
this.countMinStack++;
4642
}
4743
}
4844

4945
pop() {
50-
if(this.countStack === 0)
51-
return null;
46+
if (this.countStack === 0) return null;
5247

5348
var elem = this.stack[this.countStack - 1];
5449
this.countStack--;
55-
56-
if(elem === this.minStack[this.countMinStack - 1])
57-
this.countMinStack--;
50+
51+
if (elem === this.minStack[this.countMinStack - 1]) this.countMinStack--;
5852

5953
return elem;
6054
}
6155

6256
top() {
63-
if(this.countStack === 0)
64-
return null;
65-
57+
if (this.countStack === 0) return null;
58+
6659
return this.stack[this.countStack - 1];
6760
}
6861

6962
getMin() {
70-
if(this.countMinStack === 0)
71-
return null;
63+
if (this.countMinStack === 0) return null;
7264

73-
return this.minStack[this.countMinStack - 1]
65+
return this.minStack[this.countMinStack - 1];
7466
}
7567
}
7668

‎LeetcodeProblems/Algorithms/Minimum_Window_Substring.js

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,34 @@ If there is no such window in S that covers all characters in T, return the empt
1515
If there is such window, you are guaranteed that there will always be only one unique minimum window in S.
1616
*/
1717

18+
var minWindow = function (s, t) {
19+
if (t.length === 0 || s.length < t.length) return "";
1820

19-
var minWindow = function(s, t) {
20-
if(t.length === 0 || s.length < t.length)
21-
return "";
22-
2321
var start = 0;
2422
var end = 0;
2523
var solutionStart, solutionEnd;
2624
var hashT = getHash(t);
2725
var currentHash = {};
2826
var currentCount = 0;
29-
while(end < s.length) {
27+
while (end < s.length) {
3028
const letter = s.charAt(end);
31-
if(hashT[letter]) {
32-
currentHash[letter] = (currentHash[letter]) ? currentHash[letter] + 1 : 1;
33-
if(currentHash[letter] <= hashT[letter])
34-
currentCount++;
35-
if(currentCount === t.length) {
36-
while(hashT[s[start]] === undefined || currentHash[s[start]] > hashT[s[start]]) {
37-
if(currentHash[s[start]] !== undefined)
29+
if (hashT[letter]) {
30+
currentHash[letter] = currentHash[letter] ? currentHash[letter] + 1 : 1;
31+
if (currentHash[letter] <= hashT[letter]) currentCount++;
32+
if (currentCount === t.length) {
33+
while (
34+
hashT[s[start]] === undefined ||
35+
currentHash[s[start]] > hashT[s[start]]
36+
) {
37+
if (currentHash[s[start]] !== undefined)
3838
currentHash[s[start]] = currentHash[s[start]] - 1;
39-
39+
4040
start++;
4141
}
42-
if(solutionEnd === undefined || end - start < solutionEnd - solutionStart) {
42+
if (
43+
solutionEnd === undefined ||
44+
end - start < solutionEnd - solutionStart
45+
) {
4346
solutionStart = start;
4447
solutionEnd = end;
4548
}
@@ -51,17 +54,17 @@ var minWindow = function(s, t) {
5154
}
5255
end++;
5356
}
54-
57+
5558
return s.slice(solutionStart, solutionEnd + 1);
56-
};
59+
};
5760

58-
var getHash = function(t) {
61+
var getHash = function (t) {
5962
var hash = {};
60-
for(var i = 0; i < t.length; i++) {
63+
for (var i = 0; i < t.length; i++) {
6164
const letter = t.charAt(i);
62-
hash[letter] = (hash[letter]) ? hash[letter] + 1 : 1;
65+
hash[letter] = hash[letter] ? hash[letter] + 1 : 1;
6366
}
6467
return hash;
65-
}
68+
};
6669

6770
module.exports.minWindow = minWindow;

‎LeetcodeProblems/Algorithms/NQueens.js

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,57 +17,76 @@ Output: [
1717
".Q.."]
1818
]
1919
Explanation: There exist two distinct solutions to the 4-queens puzzle as shown above.
20-
*/
21-
20+
*/
2221

2322
/**
2423
* @param {number} n
2524
* @return {string[][]}
2625
*/
27-
var solveNQueens = function(n) {
26+
var solveNQueens = function (n) {
2827
var sol = [];
2928
solveNQueensAux(n, 0, new Set(), new Set(), new Set(), [], sol);
3029
return parseSolutions(sol, n);
3130
};
3231

33-
var solveNQueensAux = function(n, row, diagonalDiffs, diagonalSums, cols, currentSol, sol) {
34-
if(row == n) {
35-
sol.push(currentSol);
36-
return;
32+
var solveNQueensAux = function (
33+
n,
34+
row,
35+
diagonalDiffs,
36+
diagonalSums,
37+
cols,
38+
currentSol,
39+
sol
40+
) {
41+
if (row == n) {
42+
sol.push(currentSol);
43+
return;
3744
}
38-
39-
for(var i = 0; i < n; i++) {
45+
46+
for (var i = 0; i < n; i++) {
4047
const diagonalDiff = i - row;
4148
const diagonalSum = i + row;
42-
if(!diagonalDiffs.has(diagonalDiff) && !cols.has(i) && !diagonalSums.has(diagonalSum)) {
49+
if (
50+
!diagonalDiffs.has(diagonalDiff) &&
51+
!cols.has(i) &&
52+
!diagonalSums.has(diagonalSum)
53+
) {
4354
diagonalDiffs.add(diagonalDiff);
4455
diagonalSums.add(diagonalSum);
4556
cols.add(i);
46-
solveNQueensAux(n, row + 1, diagonalDiffs, diagonalSums, cols, [...currentSol, ...[[row, i]]], sol);
57+
solveNQueensAux(
58+
n,
59+
row + 1,
60+
diagonalDiffs,
61+
diagonalSums,
62+
cols,
63+
[...currentSol, ...[[row, i]]],
64+
sol
65+
);
4766
cols.delete(i);
4867
diagonalDiffs.delete(diagonalDiff);
4968
diagonalSums.delete(diagonalSum);
5069
}
5170
}
52-
}
71+
};
5372

54-
var parseSolutions = function(sols, n) {
73+
var parseSolutions = function (sols, n) {
5574
var matrixes = [];
56-
for(var i = 0; i < sols.length; i++) {
75+
for (var i = 0; i < sols.length; i++) {
5776
var sol = sols[i];
5877
var matrix = [];
59-
for(var row = 0; row < n; row++) {
60-
matrix[row] = []
78+
for (var row = 0; row < n; row++) {
79+
matrix[row] = [];
6180
const queenPos = sol[row];
62-
for(var col = 0; col < n; col++) {
63-
matrix[row] += (queenPos[1] == col) ? "Q" : ".";
81+
for (var col = 0; col < n; col++) {
82+
matrix[row] += queenPos[1] == col ? "Q" : ".";
6483
}
6584
}
6685

6786
matrixes.push(matrix);
6887
}
6988

7089
return matrixes;
71-
}
90+
};
7291

7392
module.exports.solveNQueens = solveNQueens;

‎LeetcodeProblems/Algorithms/Number_of_Islands.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,40 +25,38 @@ Input:
2525
Output: 3
2626
*/
2727

28-
2928
/*
3029
* @param {character[][]} grid
3130
* @return {number}
3231
*/
33-
var numIslands = function(grid) {
34-
if(grid.length === 0)
35-
return 0;
36-
32+
var numIslands = function (grid) {
33+
if (grid.length === 0) return 0;
34+
3735
var countIslands = 0;
3836
const rowsCount = grid.length;
3937
const columnsCount = grid[0].length;
40-
for(var i = 0; i < rowsCount; i++) {
41-
for(var j = 0; j < columnsCount; j++) {
42-
if(grid[i][j] == 1) {
38+
for (var i = 0; i < rowsCount; i++) {
39+
for (var j = 0; j < columnsCount; j++) {
40+
if (grid[i][j] == 1) {
4341
countIslands++;
4442
colorIsland(grid, i, j, rowsCount, columnsCount);
4543
}
4644
}
4745
}
48-
46+
4947
return countIslands;
5048
};
5149

52-
var colorIsland = function(grid, i, j, rowsCount, columnsCount) {
53-
if(i < 0 || j < 0 || i >= rowsCount || j >= columnsCount || grid[i][j] == 0)
54-
return;
55-
50+
var colorIsland = function (grid, i, j, rowsCount, columnsCount) {
51+
if (i < 0 || j < 0 || i >= rowsCount || j >= columnsCount || grid[i][j] == 0)
52+
return;
53+
5654
grid[i][j] = 0;
57-
55+
5856
colorIsland(grid, i - 1, j, rowsCount, columnsCount);
5957
colorIsland(grid, i + 1, j, rowsCount, columnsCount);
6058
colorIsland(grid, i, j - 1, rowsCount, columnsCount);
6159
colorIsland(grid, i, j + 1, rowsCount, columnsCount);
62-
}
60+
};
6361

6462
module.exports.numIslands = numIslands;

‎LeetcodeProblems/Algorithms/Number_of_Segments_in_a_String.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,22 @@ Input: "Hello, my name is John"
1212
Output: 5
1313
*/
1414

15-
1615
/**
1716
* @param {string} s
1817
* @return {number}
1918
*/
20-
var countSegments = function(s) {
19+
var countSegments = function (s) {
2120
var count = 0;
2221
var i = 0;
2322

24-
while(i < s.length) {
25-
if(s[i] !== " ") {
23+
while (i < s.length) {
24+
if (s[i] !== " ") {
2625
count++;
27-
while(i < s.length && s[i] !== " ")
28-
i++;
26+
while (i < s.length && s[i] !== " ") i++;
2927
}
3028
i++;
3129
}
32-
30+
3331
return count;
3432
};
3533

‎LeetcodeProblems/Algorithms/Permutations.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,24 @@ Output:
1818
]
1919
*/
2020

21-
var permute = function(nums) {
21+
var permute = function (nums) {
2222
return permuteAux(nums, 0, [], new Set());
2323
};
2424

25-
var permuteAux = function(nums, pos, currentSol, set) {
26-
if(pos === nums.length) {
25+
var permuteAux = function (nums, pos, currentSol, set) {
26+
if (pos === nums.length) {
2727
return [currentSol];
2828
}
2929
var ret = [];
30-
for(var i = 0; i < nums.length; i++) {
31-
if(!set.has(nums[i])) {
32-
set.add(nums[i])
30+
for (var i = 0; i < nums.length; i++) {
31+
if (!set.has(nums[i])) {
32+
set.add(nums[i]);
3333
var sol = permuteAux(nums, pos + 1, currentSol.concat(nums[i]), set);
3434
ret = [...ret, ...sol];
3535
set.delete(nums[i]);
3636
}
3737
}
3838
return ret;
39-
}
39+
};
4040

4141
module.exports.permute = permute;

‎LeetcodeProblems/Algorithms/Permutations_II.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,28 @@ Output:
1515
]
1616
*/
1717

18-
19-
var permuteUnique = function(nums) {
18+
var permuteUnique = function (nums) {
2019
var map = {};
21-
for(var i = 0; i < nums.length; i++) {
22-
var value = nums[i];
23-
map[value] = (map[value]) ? map[value] + 1 : 1;
20+
for (var i = 0; i < nums.length; i++) {
21+
var value = nums[i];
22+
map[value] = map[value] ? map[value] + 1 : 1;
2423
}
25-
24+
2625
return permuteUniqueAux(nums.length, map, []);
2726
};
2827

29-
var permuteUniqueAux = function(n, map, currentSol) {
30-
if(currentSol.length === n) {
28+
var permuteUniqueAux = function (n, map, currentSol) {
29+
if (currentSol.length === n) {
3130
return [currentSol];
3231
}
3332

3433
var ret = [];
35-
for(var num in map) {
34+
for (var num in map) {
3635
const occ = map[num];
37-
if(occ === 1) {
36+
if (occ === 1) {
3837
delete map[num];
3938
} else {
40-
map[num] = occ -1 ;
39+
map[num] = occ - 1;
4140
}
4241
ret = [...ret, ...permuteUniqueAux(n, map, currentSol.concat(num))];
4342
map[num] = occ;
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
1-
2-
31
// Permutations without
4-
var subsetWithoutDuplicates = function(nums) {
5-
if(nums.lenght == 0){
2+
var subsetWithoutDuplicates = function (nums) {
3+
if (nums.lenght == 0) {
64
return;
75
}
86
var solution = [];
97
subsetWithoutDuplicatesAux(nums, [], solution);
108
return solution;
11-
}
9+
};
1210

13-
var subsetWithoutDuplicatesAux = function(nums, current, sol) {
14-
if(nums.length == 0){
11+
var subsetWithoutDuplicatesAux = function (nums, current, sol) {
12+
if (nums.length == 0) {
1513
sol.push(current);
1614
}
1715

1816
var setNums = new Set();
1917

2018
nums.forEach((value, index) => {
21-
if(setNums.has(value)) {
19+
if (setNums.has(value)) {
2220
return;
2321
}
2422
setNums.add(value);
25-
var newCurrent = [...current, value]
26-
27-
var newNum = nums.filter(function(num, idx) { return index !== idx});
23+
var newCurrent = [...current, value];
24+
25+
var newNum = nums.filter(function (num, idx) {
26+
return index !== idx;
27+
});
2828
subsetWithoutDuplicatesAux(newNum, newCurrent, sol);
29-
})
30-
}
29+
});
30+
};
3131

3232
module.exports.subsetWithoutDuplicates = subsetWithoutDuplicates;

‎LeetcodeProblems/Algorithms/Permutations_Without_Duplicates.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,27 @@ Output:
1919
*/
2020

2121
// Permutations without Duplicates
22-
var subsetWithoutDuplicates = function(nums) {
23-
if(nums.lenght == 0){
22+
var subsetWithoutDuplicates = function (nums) {
23+
if (nums.lenght == 0) {
2424
return;
2525
}
2626
var solution = [];
2727
subsetWithoutDuplicatesAux(nums, [], solution);
2828
return solution;
29-
}
29+
};
3030

31-
var subsetWithoutDuplicatesAux = function(nums, current, sol) {
32-
if(nums.length == 0){
31+
var subsetWithoutDuplicatesAux = function (nums, current, sol) {
32+
if (nums.length == 0) {
3333
sol.push(current);
3434
}
3535

36-
for(var i = 0; i < nums.length; i++) {
37-
var newCurrent = [...current, nums[i]]
38-
var newNums = nums.filter(function(num, index) { return index !== i });
36+
for (var i = 0; i < nums.length; i++) {
37+
var newCurrent = [...current, nums[i]];
38+
var newNums = nums.filter(function (num, index) {
39+
return index !== i;
40+
});
3941
subsetWithoutDuplicatesAux(newNums, newCurrent, sol);
4042
}
41-
}
43+
};
4244

4345
module.exports.subsetWithoutDuplicates = subsetWithoutDuplicates;

‎LeetcodeProblems/Algorithms/Regular_Expression_Matching.js

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,43 +51,51 @@ Output: false
5151
* @param {*} p
5252
*/
5353

54-
55-
var isMatch = function(s, p) {
54+
var isMatch = function (s, p) {
5655
return isMatchAux(s, p, 0, 0);
5756
};
5857

59-
var isMatchAux = function(str, pattern, posStr, posPat) {
60-
if(posStr == str.length)
58+
var isMatchAux = function (str, pattern, posStr, posPat) {
59+
if (posStr == str.length)
6160
return posPat == pattern.length || canBeZero(pattern, posPat);
6261

63-
if(posPat < pattern.length - 1 && pattern.charAt(posPat + 1) == "*") {
62+
if (posPat < pattern.length - 1 && pattern.charAt(posPat + 1) == "*") {
6463
const valuePattern = pattern.charAt(posPat);
6564
posPat = posPat + 2;
6665

67-
if (isMatchAux(str, pattern, posStr, posPat)) { // 0 matches
68-
return true
66+
if (isMatchAux(str, pattern, posStr, posPat)) {
67+
// 0 matches
68+
return true;
6969
}
70-
71-
while(posStr < str.length && (str.charAt(posStr) === valuePattern || valuePattern === ".")) {
72-
if(isMatchAux(str, pattern, posStr + 1, posPat)) {
70+
71+
while (
72+
posStr < str.length &&
73+
(str.charAt(posStr) === valuePattern || valuePattern === ".")
74+
) {
75+
if (isMatchAux(str, pattern, posStr + 1, posPat)) {
7376
return true;
7477
}
7578
posStr++;
7679
}
77-
} else if(str.charAt(posStr) === pattern.charAt(posPat) || pattern.charAt(posPat) === ".") {
80+
} else if (
81+
str.charAt(posStr) === pattern.charAt(posPat) ||
82+
pattern.charAt(posPat) === "."
83+
) {
7884
return isMatchAux(str, pattern, posStr + 1, posPat + 1);
7985
}
80-
86+
8187
return false;
82-
}
88+
};
8389

84-
var canBeZero = function(pattern, posPat) {
85-
while(posPat < pattern.length && pattern.charAt(posPat) == "*" ||
86-
posPat < pattern.length - 1 && pattern.charAt(posPat + 1) == "*") {
90+
var canBeZero = function (pattern, posPat) {
91+
while (
92+
(posPat < pattern.length && pattern.charAt(posPat) == "*") ||
93+
(posPat < pattern.length - 1 && pattern.charAt(posPat + 1) == "*")
94+
) {
8795
posPat++;
8896
}
89-
97+
9098
return posPat == pattern.length;
91-
}
99+
};
92100

93101
module.exports.isMatch = isMatch;

‎LeetcodeProblems/Algorithms/Remove_Invalid_Parentheses.js

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,49 +24,47 @@ Output: [""]
2424
* @param {string} s
2525
* @return {string[]}
2626
*/
27-
var removeInvalidParentheses = function(s) {
27+
var removeInvalidParentheses = function (s) {
2828
var queue = [];
2929
var visited = new Set();
3030
queue.push(s);
3131
var result = [];
3232
var found = false;
33-
34-
while(queue.length !== 0) {
33+
34+
while (queue.length !== 0) {
3535
var str = queue.shift();
36-
if(isValid(str)) {
36+
if (isValid(str)) {
3737
result.push(str);
3838
found = true;
39-
} else if(!found){
40-
for(var i = 0; i < s.length; i++) {
41-
if(str[i] === "(" || str[i] === ")") {
39+
} else if (!found) {
40+
for (var i = 0; i < s.length; i++) {
41+
if (str[i] === "(" || str[i] === ")") {
4242
var subStr = str.slice(0, i) + str.slice(i + 1, s.length);
43-
if(!visited.has(subStr)) {
44-
queue.push(subStr);
43+
if (!visited.has(subStr)) {
44+
queue.push(subStr);
4545
visited.add(subStr);
4646
}
47-
}
47+
}
4848
}
4949
}
5050
}
51-
51+
5252
return result;
5353
};
5454

55-
var isValid = function(s) {
55+
var isValid = function (s) {
5656
var leftCount = 0;
5757
var iter = 0;
58-
while(iter < s.length) {
59-
if(s[iter] === "(")
60-
leftCount++;
61-
else if(s[iter] === ")") {
58+
while (iter < s.length) {
59+
if (s[iter] === "(") leftCount++;
60+
else if (s[iter] === ")") {
6261
leftCount--;
63-
if(leftCount < 0)
64-
return false;
62+
if (leftCount < 0) return false;
6563
}
6664
iter++;
67-
}
68-
65+
}
66+
6967
return leftCount === 0;
70-
}
68+
};
7169

7270
module.exports.removeInvalidParentheses = removeInvalidParentheses;

‎LeetcodeProblems/Algorithms/Restore_IP_Addresses.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,42 @@ Input: "25525511135"
1010
Output: ["255.255.11.135", "255.255.111.35"]
1111
*/
1212

13-
var restoreIpAddresses = function(s) {
13+
var restoreIpAddresses = function (s) {
1414
var restore = restoreInputBits("", s, 4);
1515

1616
var ret = [];
17-
for(var i = 0; i < restore.length; i++) {
17+
for (var i = 0; i < restore.length; i++) {
1818
ret.push(restore[i].join("."));
1919
}
2020

2121
return ret;
2222
};
2323

24-
var restoreInputBits = function(partial, s, num) {
25-
if(s.length == 0 && num == 0 )
26-
return [partial];
27-
if(s.length < num || s.length > num * 3 || num == 0)
28-
return [];
29-
30-
const oneNum = restoreInputBits([...partial, s.slice(0, 1)], s.slice(1), num - 1);
31-
32-
if(s.length === 1 || s.slice(0, 1) === "0")
33-
return oneNum
34-
35-
const twoNums = restoreInputBits([...partial, s.slice(0, 2)], s.slice(2), num - 1);
36-
if(s.length === 2 || s.slice(0, 3) > 255)
37-
return [...oneNum, ...twoNums]
38-
39-
const threeNums = restoreInputBits([...partial, s.slice(0, 3)], s.slice(3), num - 1);
24+
var restoreInputBits = function (partial, s, num) {
25+
if (s.length == 0 && num == 0) return [partial];
26+
if (s.length < num || s.length > num * 3 || num == 0) return [];
27+
28+
const oneNum = restoreInputBits(
29+
[...partial, s.slice(0, 1)],
30+
s.slice(1),
31+
num - 1
32+
);
33+
34+
if (s.length === 1 || s.slice(0, 1) === "0") return oneNum;
35+
36+
const twoNums = restoreInputBits(
37+
[...partial, s.slice(0, 2)],
38+
s.slice(2),
39+
num - 1
40+
);
41+
if (s.length === 2 || s.slice(0, 3) > 255) return [...oneNum, ...twoNums];
42+
43+
const threeNums = restoreInputBits(
44+
[...partial, s.slice(0, 3)],
45+
s.slice(3),
46+
num - 1
47+
);
4048
return [...oneNum, ...twoNums, ...threeNums];
41-
}
49+
};
4250

4351
module.exports.restoreIpAddresses = restoreIpAddresses;

‎LeetcodeProblems/Algorithms/Reverse_String_II.js

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,29 @@ The string consists of lower English letters only.
1111
Length of the given string and k will in the range [1, 10000]
1212
*/
1313

14-
var reverseStr = function(s, k) {
15-
if(k <= 1)
16-
return s;
14+
var reverseStr = function (s, k) {
15+
if (k <= 1) return s;
1716
var ret = "";
18-
for(var iterK = 0; iterK * k < s.length; iterK = iterK + 2) {
17+
for (var iterK = 0; iterK * k < s.length; iterK = iterK + 2) {
1918
const start = iterK * k;
20-
const end = start + k - 1;
21-
19+
const end = start + k - 1;
20+
2221
ret += reverse(s, start, end);
23-
ret += s.slice(end + 1, k * (iterK + 2));
22+
ret += s.slice(end + 1, k * (iterK + 2));
2423
}
25-
24+
2625
return ret;
2726
};
2827

29-
var reverse = function(s, start, end) {
28+
var reverse = function (s, start, end) {
3029
var ret = "";
31-
if(end >= s.length)
32-
end = s.length - 1;
33-
34-
while(start <= end) {
30+
if (end >= s.length) end = s.length - 1;
31+
32+
while (start <= end) {
3533
ret += s.charAt(end);
3634
end--;
3735
}
3836
return ret;
39-
}
37+
};
4038

4139
module.exports.reverseStr = reverseStr;

‎LeetcodeProblems/Algorithms/Same_Tree.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Input: 1 1
3232
[1,2,1], [1,1,2]
3333
3434
Output: false
35-
*/
35+
*/
3636

3737
/**
3838
* Definition for a binary tree node.
@@ -46,12 +46,10 @@ Output: false
4646
* @param {TreeNode} q
4747
* @return {boolean}
4848
*/
49-
var isSameTree = function(p, q) {
50-
if(p === null)
51-
return q === null;
52-
53-
if(q === null || p.val !== q.val)
54-
return false;
55-
49+
var isSameTree = function (p, q) {
50+
if (p === null) return q === null;
51+
52+
if (q === null || p.val !== q.val) return false;
53+
5654
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
5755
};

‎LeetcodeProblems/Algorithms/merge_k_sorted_lists.js

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,48 +15,45 @@ Input:
1515
Output: 1->1->2->3->4->4->5->6
1616
*/
1717

18-
const ListNodeTestHelper = require('../../utilsClasses/ListNodeTestHelper');
18+
const ListNodeTestHelper = require("../../utilsClasses/ListNodeTestHelper");
1919

20-
var ListNode = require('../../utilsClasses/ListNode').ListNode;
20+
var ListNode = require("../../utilsClasses/ListNode").ListNode;
21+
22+
var mergeKLists = function (lists) {
23+
if (lists.length === 0) return null;
2124

22-
var mergeKLists = function(lists) {
23-
if(lists.length === 0)
24-
return null;
25-
2625
var queue = [];
27-
for(var i = 0; i < lists.length; i++)
28-
queue.push(lists[i]);
29-
30-
while(queue.length > 1) {
26+
for (var i = 0; i < lists.length; i++) queue.push(lists[i]);
27+
28+
while (queue.length > 1) {
3129
list1 = queue.shift();
3230
list2 = queue.shift();
3331
queue.push(mergeLists(list1, list2));
3432
}
35-
33+
3634
return queue.shift();
3735
};
3836

39-
var mergeLists = function(list1, list2) {
40-
if(list1 === null) {
37+
var mergeLists = function (list1, list2) {
38+
if (list1 === null) {
4139
return list2;
42-
} else if(list2 === null)
43-
return list1;
44-
40+
} else if (list2 === null) return list1;
41+
4542
var iter1 = list1;
46-
var iter2 = list2;
43+
var iter2 = list2;
4744
var head;
48-
49-
if(iter1.val < iter2.val) {
45+
46+
if (iter1.val < iter2.val) {
5047
head = iter1;
51-
iter1 = iter1.next
48+
iter1 = iter1.next;
5249
} else {
5350
head = iter2;
5451
iter2 = iter2.next;
5552
}
5653

5754
var iterHead = head;
58-
while(iter1 !== null && iter2 !== null) {
59-
if(iter1.val < iter2.val) {
55+
while (iter1 !== null && iter2 !== null) {
56+
if (iter1.val < iter2.val) {
6057
iterHead.next = iter1;
6158
iter1 = iter1.next;
6259
} else {
@@ -66,14 +63,14 @@ var mergeLists = function(list1, list2) {
6663
iterHead = iterHead.next;
6764
iterHead.next = null;
6865
}
69-
70-
if(iter1 !== null) {
66+
67+
if (iter1 !== null) {
7168
iterHead.next = iter1;
72-
} else if(iter2 !== null) {
69+
} else if (iter2 !== null) {
7370
iterHead.next = iter2;
7471
}
75-
72+
7673
return head;
77-
}
74+
};
7875

7976
module.exports.mergeKLists = mergeKLists;

0 commit comments

Comments
 (0)
Please sign in to comment.