Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2bc50eb

Browse files
update 5 leetcode
1 parent 78aebbe commit 2bc50eb

File tree

5 files changed

+184
-0
lines changed

5 files changed

+184
-0
lines changed

‎leetcode/100.same-tree.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* @lc app=leetcode id=100 lang=javascript
3+
*
4+
* [100] Same Tree
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* @param {TreeNode} p
18+
* @param {TreeNode} q
19+
* @return {boolean}
20+
*/
21+
var isSameTree = function(p, q) {
22+
/**
23+
* 比较两棵树
24+
* @param {*} p
25+
* @param {*} q
26+
*/
27+
function compare(p, q) {
28+
// 当前节点没有值的情况
29+
if (!q && !p) {
30+
return true;
31+
}
32+
// 因为上一个判断了两个都不存在的场景,所以这里的场景一定是一个有值,另一个无值,所以是不相等的
33+
if (!q || !p) {
34+
return false;
35+
}
36+
// 值不相等,那显然不等
37+
if (q.val !== p.val) {
38+
return false;
39+
}
40+
// 递归比较的方式,必须两个都返回 true 才是完全相等
41+
return compare(p.left, q.left) && compare(p.right, q.right);
42+
}
43+
44+
return compare(p, q);
45+
46+
};
47+
// @lc code=end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* @lc app=leetcode id=144 lang=javascript
3+
*
4+
* [144] Binary Tree Preorder Traversal
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* @param {TreeNode} root
18+
* @return {number[]}
19+
*/
20+
var preorderTraversal = function(root) {
21+
let res = [];
22+
function walkTree(root) {
23+
if (root !== null) {
24+
res.push(root.val);
25+
root.left && walkTree(root.left);
26+
root.right && walkTree(root.right);
27+
}
28+
}
29+
walkTree(root);
30+
return res;
31+
};
32+
// @lc code=end

‎leetcode/1470.shuffle-the-array.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* @lc app=leetcode id=1470 lang=javascript
3+
*
4+
* [1470] Shuffle the Array
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* @param {number[]} nums
10+
* @param {number} n
11+
* @return {number[]}
12+
*/
13+
var shuffle = function(nums, n) {
14+
let arr = [];
15+
for (let i = 0; i < n; i++) {
16+
arr[2 * i] = nums[i];
17+
arr[2 * i + 1] = nums[i + n];
18+
}
19+
return arr;
20+
};
21+
// @lc code=end

‎leetcode/461.hamming-distance.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* @lc app=leetcode id=461 lang=javascript
3+
*
4+
* [461] Hamming Distance
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* 使用位运算
10+
* 异或
11+
* @param {number} x
12+
* @param {number} y
13+
* @return {number}
14+
*/
15+
var hammingDistance = function(x, y) {
16+
let b = x ^ y;
17+
let sum = 0;
18+
19+
while (b) {
20+
sum += b % 2;
21+
b = b >> 1;
22+
}
23+
24+
return sum;
25+
};
26+
// @lc code=end
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* @lc app=leetcode id=94 lang=javascript
3+
*
4+
* [94] Binary Tree Inorder Traversal
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* 迭代
18+
* @param {TreeNode} root
19+
* @return {number[]}
20+
*/
21+
var inorderTraversal = function(root) {
22+
let res = [];
23+
let stk = [];
24+
25+
// 迭代的方式,需要用数组来保存迭代内容
26+
while (root || stk.length) {
27+
while (root) {
28+
stk.push(root);
29+
root = root.left;
30+
}
31+
// 使用栈的方式,先推入的根节点在最底部
32+
root = stk.pop();
33+
res.push(root.val);
34+
root = root.right;
35+
}
36+
37+
return res;
38+
};
39+
40+
/**
41+
* 递归
42+
* @param {*} root
43+
* @returns
44+
*/
45+
var inorderTraversal2 = function(root) {
46+
let res = [];
47+
function walkTree(root) {
48+
if (root !== null) {
49+
// 递归的方式里,前序,中序,后序遍历的区别主要在这里
50+
root.left && walkTree(root.left);
51+
res.push(root.val);
52+
root.right && walkTree(root.right);
53+
}
54+
}
55+
walkTree(root);
56+
return res;
57+
};
58+
// @lc code=end

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /