Skip to content

Commit 6ef17de

Browse files
committed
Add more solutions
1 parent fcc4426 commit 6ef17de

File tree

21 files changed

+1506
-0
lines changed

21 files changed

+1506
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* @lc app=leetcode.cn id=1161 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [1161] 最大层内元素和
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* Definition for a binary tree node.
15+
* function TreeNode(val, left, right) {
16+
* this.val = (val===undefined ? 0 : val)
17+
* this.left = (left===undefined ? null : left)
18+
* this.right = (right===undefined ? null : right)
19+
* }
20+
*/
21+
/**
22+
* @param {TreeNode} root
23+
* @return {number}
24+
*/
25+
var maxLevelSum = function(root) {
26+
let maxSum = Number.MIN_SAFE_INTEGER;
27+
let result = 0;
28+
let queue = [root];
29+
let queue_i = 0;
30+
let level = 1;
31+
32+
while (queue_i < queue.length) {
33+
let levelLength = queue.length - queue_i;
34+
let levelIndex = queue_i + levelLength;
35+
let levelSum = 0;
36+
37+
while (queue_i < levelIndex) {
38+
const node = queue[queue_i++];
39+
levelSum += node.val;
40+
41+
if (node.left) queue.push(node.left);
42+
if (node.right) queue.push(node.right);
43+
}
44+
45+
if (levelSum > maxSum) {
46+
maxSum = levelSum;
47+
result = level;
48+
}
49+
50+
level++;
51+
}
52+
53+
return result;
54+
};
55+
// @lc code=end
56+
57+
58+
59+
// @lcpr case=start
60+
// [1,7,0,7,-8,null,null]\n
61+
// @lcpr case=end
62+
63+
// @lcpr case=start
64+
// [989,null,10250,98693,-89388,null,null,null,-32127]\n
65+
// @lcpr case=end
66+
67+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* @lc app=leetcode.cn id=1372 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [1372] 二叉树中的最长交错路径
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* Definition for a binary tree node.
15+
* function TreeNode(val, left, right) {
16+
* this.val = (val===undefined ? 0 : val)
17+
* this.left = (left===undefined ? null : left)
18+
* this.right = (right===undefined ? null : right)
19+
* }
20+
*/
21+
/**
22+
* @param {TreeNode} root
23+
* @return {number}
24+
*/
25+
var longestZigZag = function(root) {
26+
let result = [0];
27+
28+
dfs(root.left, 0, 1, result);
29+
dfs(root.right, 0, 0, result);
30+
31+
return result[0];
32+
};
33+
34+
var dfs = function(root, len, direction, result) {
35+
if (!root) {
36+
result[0] = Math.max(result[0], len);
37+
return;
38+
}
39+
40+
if (direction === 0) {
41+
dfs(root.left, len+1, 1, result);
42+
dfs(root.right, 0, 0, result);
43+
}
44+
else {
45+
dfs(root.left, 0, 1, result);
46+
dfs(root.right, len+1, 0, result);
47+
}
48+
}
49+
// @lc code=end
50+
51+
52+
53+
// @lcpr case=start
54+
// [1,null,1,1,1,null,null,1,1,null,1,null,null,null,1,null,1]\n
55+
// @lcpr case=end
56+
57+
// @lcpr case=start
58+
// [1,1,1,null,1,null,null,1,1,null,1]\n
59+
// @lcpr case=end
60+
61+
// @lcpr case=start
62+
// [1]\n
63+
// @lcpr case=end
64+
65+
// @lcpr case=start
66+
// [6,9,7,3,null,2,8,5,8,9,7,3,9,9,4,2,10,null,5,4,3,10,10,9,4,1,2,null,null,6,5,null,null,null,null,9,null,9,6,5,null,5,null,null,7,7,4,null,1,null,null,3,7,null,9,null,null,null,null,null,null,null,null,9,9,null,null,null,7,null,null,null,null,null,null,null,null,null,6,8,7,null,null,null,3,10,null,null,null,null,null,1,null,1,2]\n
67+
// @lcpr case=end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* @lc app=leetcode.cn id=1448 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [1448] 统计二叉树中好节点的数目
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* Definition for a binary tree node.
15+
* function TreeNode(val, left, right) {
16+
* this.val = (val===undefined ? 0 : val)
17+
* this.left = (left===undefined ? null : left)
18+
* this.right = (right===undefined ? null : right)
19+
* }
20+
*/
21+
/**
22+
* @param {TreeNode} root
23+
* @return {number}
24+
*/
25+
var goodNodes = function(root) {
26+
return dfs(root, root.val);
27+
};
28+
29+
var dfs = function(root, max) {
30+
if (!root) return 0;
31+
32+
if (root.val >= max) {
33+
return 1 + dfs(root.left, root.val) + dfs(root.right, root.val);
34+
}
35+
else {
36+
return dfs(root.left, max) + dfs(root.right, max);
37+
}
38+
}
39+
// @lc code=end
40+
41+
42+
43+
// @lcpr case=start
44+
// [3,1,4,3,null,1,5]\n
45+
// @lcpr case=end
46+
47+
// @lcpr case=start
48+
// [3,3,null,4,2]\n
49+
// @lcpr case=end
50+
51+
// @lcpr case=start
52+
// [1]\n
53+
// @lcpr case=end
54+
55+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* @lc app=leetcode.cn id=1466 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [1466] 重新规划路线
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* @param {number} n
15+
* @param {number[][]} connections
16+
* @return {number}
17+
*/
18+
var minReorder = function(n, connections) {
19+
const outEdges = new Map();
20+
const inEdges = new Map();
21+
22+
for (const [u, v] of connections) {
23+
outEdges.set(u, (outEdges.get(u) || []).concat(v));
24+
inEdges.set(v, (inEdges.get(v) || []).concat(u));
25+
}
26+
27+
const visited = new Set();
28+
const queue = [0];
29+
let queue_i = 0;
30+
let count = 0;
31+
32+
while (queue_i < queue.length) {
33+
const city = queue[queue_i++];
34+
35+
if (visited.has(city)) {
36+
continue;
37+
}
38+
39+
visited.add(city);
40+
for (const neighbor of outEdges.get(city) || []) {
41+
queue.push(neighbor);
42+
if (!visited.has(neighbor)) count++;
43+
}
44+
for (const neighbor of inEdges.get(city) || []) {
45+
queue.push(neighbor);
46+
}
47+
}
48+
49+
return count;
50+
};
51+
// @lc code=end
52+
53+
54+
55+
// @lcpr case=start
56+
// 6\n[[0,1],[1,3],[2,3],[4,0],[4,5]]\n
57+
// @lcpr case=end
58+
59+
// @lcpr case=start
60+
// 5\n[[1,0],[1,2],[3,2],[3,4]]\n
61+
// @lcpr case=end
62+
63+
// @lcpr case=start
64+
// 3\n[[1,0],[2,0]]\n
65+
// @lcpr case=end
66+
67+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* @lc app=leetcode.cn id=1926 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [1926] 迷宫中离入口最近的出口
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* @param {character[][]} maze
15+
* @param {number[]} entrance
16+
* @return {number}
17+
*/
18+
var nearestExit = function(maze, entrance) {
19+
const queue = [entrance];
20+
let queue_i = 0;
21+
let step = 0;
22+
while (queue_i < queue.length) {
23+
let currStepLength = queue.length - queue_i;
24+
let currStepIndex = queue_i + currStepLength;
25+
while (queue_i < currStepIndex) {
26+
const [i, j] = queue[queue_i++];
27+
28+
if (i < 0 || j < 0 || i >= maze.length || j >= maze[0].length) {
29+
if (step > 1) return step - 1;
30+
else continue;
31+
}
32+
33+
if (maze[i][j] === '+') continue;
34+
maze[i][j] = '+';
35+
36+
[[0, 1], [0, -1], [1, 0], [-1, 0]].forEach(([di, dj]) => {
37+
queue.push([i + di, j + dj]);
38+
})
39+
}
40+
step++;
41+
}
42+
43+
return -1;
44+
};
45+
// @lc code=end
46+
47+
48+
49+
// @lcpr case=start
50+
// [["+","+",".","+"],[".",".",".","+"],["+","+","+","."]]\n[1,2]\n
51+
// @lcpr case=end
52+
53+
// @lcpr case=start
54+
// [["+","+","+"],[".",".","."],["+","+","+"]]\n[1,0]\n
55+
// @lcpr case=end
56+
57+
// @lcpr case=start
58+
// [[".","+"]]\n[0,0]\n
59+
// @lcpr case=end
60+
61+
+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* @lc app=leetcode.cn id=199 lang=javascript
3+
* @lcpr version=30204
4+
*
5+
* [199] 二叉树的右视图
6+
*/
7+
8+
9+
// @lcpr-template-start
10+
11+
// @lcpr-template-end
12+
// @lc code=start
13+
/**
14+
* Definition for a binary tree node.
15+
* function TreeNode(val, left, right) {
16+
* this.val = (val===undefined ? 0 : val)
17+
* this.left = (left===undefined ? null : left)
18+
* this.right = (right===undefined ? null : right)
19+
* }
20+
*/
21+
/**
22+
* @param {TreeNode} root
23+
* @return {number[]}
24+
*/
25+
var rightSideView = function(root) {
26+
if (!root) return [];
27+
28+
const result = [];
29+
const queue = [root];
30+
let queue_i = 0;
31+
32+
while (queue_i < queue.length) {
33+
let levelLength = queue.length - queue_i;
34+
let levelIndex = queue_i + levelLength;
35+
let node = null;
36+
37+
while (queue_i < levelIndex) {
38+
node = queue[queue_i++];
39+
40+
if (node.left) queue.push(node.left);
41+
if (node.right) queue.push(node.right);
42+
}
43+
44+
result.push(node.val);
45+
}
46+
47+
return result;
48+
};
49+
// @lc code=end
50+
51+
52+
53+
// @lcpr case=start
54+
// [1,2,3,null,5,null,4]\n
55+
// @lcpr case=end
56+
57+
// @lcpr case=start
58+
// [1,2,3,4,null,null,null,5]\n
59+
// @lcpr case=end
60+
61+
// @lcpr case=start
62+
// [1,null,3]\n
63+
// @lcpr case=end
64+
65+
// @lcpr case=start
66+
// []\n
67+
// @lcpr case=end
68+
69+

0 commit comments

Comments
 (0)