feat: scaffold monorepo

This commit is contained in:
Yangshun Tay
2022-09-29 16:23:34 +08:00
parent 27a82e8c0f
commit 523d91f920
62 changed files with 19346 additions and 712 deletions

View File

@@ -3,10 +3,10 @@ function graphTopoSort(numberNodes, edges) {
const order = [];
const queue = [];
for (let i = 0; i < numberNodes; i++) {
nodes.set(i, {in: 0, out: new Set()});
nodes.set(i, { in: 0, out: new Set() });
}
edges.forEach(edge => {
edges.forEach((edge) => {
const [node_id, pre_id] = edge;
nodes.get(node_id).in += 1;
nodes.get(pre_id).out.add(node_id);
@@ -32,4 +32,9 @@ function graphTopoSort(numberNodes, edges) {
return order.length == numberNodes ? order : [];
}
console.log(graphTopoSort(3, [[0, 1], [0, 2]]));
console.log(
graphTopoSort(3, [
[0, 1],
[0, 2],
]),
);

View File

@@ -1,5 +1,5 @@
function matrixClone(matrix, defaultValue) {
return matrix.map(row => {
return matrix.map((row) => {
return defaultValue === undefined
? row.slice(0)
: Array(row.length).fill(defaultValue);
@@ -9,14 +9,53 @@ function matrixClone(matrix, defaultValue) {
const deepEqual = require('./deepEqual');
// Test clone.
const a = [[1, 2], [1, 4]];
console.log(deepEqual(matrixClone(a), [[1, 2], [1, 4]]));
const a = [
[1, 2],
[1, 4],
];
console.log(
deepEqual(matrixClone(a), [
[1, 2],
[1, 4],
]),
);
a[0][0] = 4;
console.log(deepEqual(matrixClone(a), [[1, 2], [1, 4]]) === false);
console.log(
deepEqual(matrixClone(a), [
[1, 2],
[1, 4],
]) === false,
);
console.log(deepEqual(matrixClone([[1]]), [[1]]));
// Test clone with default value.
console.log(deepEqual(matrixClone([[1, 2], [1, 4]], 1), [[1, 1], [1, 1]]));
console.log(
deepEqual(matrixClone([[1, 2], [1, 4]], null), [[null, null], [null, null]]),
deepEqual(
matrixClone(
[
[1, 2],
[1, 4],
],
1,
),
[
[1, 1],
[1, 1],
],
),
);
console.log(
deepEqual(
matrixClone(
[
[1, 2],
[1, 4],
],
null,
),
[
[null, null],
[null, null],
],
),
);

View File

@@ -1,12 +1,33 @@
function matrixTranspose(matrix) {
return matrix[0].map((col, i) => matrix.map(row => row[i]));
return matrix[0].map((col, i) => matrix.map((row) => row[i]));
}
const deepEqual = require('./deepEqual');
console.log(deepEqual(matrixTranspose([[1]]), [[1]]));
console.log(deepEqual(matrixTranspose([[1, 2]]), [[1], [2]]));
console.log(deepEqual(matrixTranspose([[1, 2], [1, 4]]), [[1, 1], [2, 4]]));
console.log(
deepEqual(matrixTranspose([[1, 2, 3], [4, 5, 6]]), [[1, 4], [2, 5], [3, 6]]),
deepEqual(
matrixTranspose([
[1, 2],
[1, 4],
]),
[
[1, 1],
[2, 4],
],
),
);
console.log(
deepEqual(
matrixTranspose([
[1, 2, 3],
[4, 5, 6],
]),
[
[1, 4],
[2, 5],
[3, 6],
],
),
);

View File

@@ -1,14 +1,19 @@
function traverse(matrix) {
const DIRECTIONS = [[0, 1], [0, -1], [1, 0], [-1, 0]];
const DIRECTIONS = [
[0, 1],
[0, -1],
[1, 0],
[-1, 0],
];
const rows = matrix.length;
const cols = matrix[0].length;
const visited = matrix.map(row => Array(row.length).fill(false));
const visited = matrix.map((row) => Array(row.length).fill(false));
function dfs(i, j) {
if (visited[i][j]) {
return;
}
visited[i][j] = true;
DIRECTIONS.forEach(dir => {
DIRECTIONS.forEach((dir) => {
const row = i + dir[0],
col = j + dir[1];
// Boundary check.

View File

@@ -37,26 +37,14 @@ console.log(deepEqual(mergeSort([2, 1]), [1, 2]));
console.log(deepEqual(mergeSort([7, 2, 4, 3, 1, 2]), [1, 2, 2, 3, 4, 7]));
console.log(deepEqual(mergeSort([1, 2, 3, 4, 5, 0]), [0, 1, 2, 3, 4, 5]));
console.log(
deepEqual(mergeSort([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]), [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
]),
deepEqual(
mergeSort([10, 9, 8, 7, 6, 5, 4, 3, 2, 1]),
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
),
);
console.log(
deepEqual(mergeSort([98322, 3242, 876, -234, 34, 12331]), [
-234,
34,
876,
3242,
12331,
98322,
]),
deepEqual(
mergeSort([98322, 3242, 876, -234, 34, 12331]),
[-234, 34, 876, 3242, 12331, 98322],
),
);